๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐ŸŽ› Others.../- ์‹ค์ „ ๋ฌธ์ œ ํ’€์ด : PS

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 15729๋ฒˆ ๋ฐฉํƒˆ์ถœ ์ž๋ฐ” ๋ฌธ์ œํ’€์ด

by Wonit 2021. 12. 8.

๋ฌธ์ œ

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋ฐฑ์ค€์˜ ๋ฐฑ์ค€ 15729 ๋ฐฉํƒˆ์ถœ ์˜ ์ ‘๊ทผ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.
์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

15729๋ฒˆ: ๋ฐฉํƒˆ์ถœ

์ฒซ์งธ ์ค„์— N(1 ≤ N ≤ 1,000,000)๊ฐ€ ์ฃผ์–ด์ง€๊ณ  ๋‘˜์งธ ์ค„์—๋Š” ์ชฝ์ง€์— ์ ํ˜€ ์žˆ๋Š” N์ž๋ฆฌ์˜ ์ˆ˜๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

 

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด์ž.

 

๋ฌธ์ œ ์ ‘๊ทผ

 

์ด ๋ฌธ์ œ๋Š” Greedy ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์šฐ์„  2๊ฐ€์ง€์˜ ๋ถˆ์„ ๋‚˜๋ˆ ์„œ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ

 

  1. ๋ถˆ์ด ๋ชจ๋‘ ๊บผ์ง„ ์ƒํƒœ -> starts
  2. ์›ํ•˜๋Š” ๋ถˆ์ด ์ผœ์ง„ ์™„์„ฑ ์ƒํƒœ -> ends

 

๋ฌธ์ œ ํ•ด๊ฒฐ ์ปจ์…‰์€ starts ์—์„œ ๋ฐฐ์—ด ์›์†Œ ํ•˜๋‚˜์”ฉ ๋Œ๋ฉฐ ends ๋ฐฐ์—ด๊ณผ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด ๋’ค์˜ 2๊ฐœ ๋ถˆ์„ toggle ์‹œ์ผœ์ค€๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

ends ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณต์„ ๋Œ๋ฉฐ ๊ณ„์†ํ•ด์„œ toggle ์‹œ์ผœ์ฃผ๊ณ  toggle ํšŸ์ˆ˜๋งŒํผ counting ์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ฃผ์˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด 2๊ฐœ ์ดํ›„์˜ ๋ถˆ์„ toggle ํ•  ๋•Œ, ๋ฐฐ์—ด ์ธ๋ฑ์Šค์˜ size ๋ณด๋‹ค ๋„˜์–ด๊ฐ€๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋•Œ๋Š” ์•„๋ฌด ์—ฐ์‚ฐ์„ ํ•˜์ง€ ์•Š๊ณ  ๋„˜์–ด๊ฐ€๋ฉด ๋œ๋‹ค.

์ •๋‹ต ์ฝ”๋“œ

public class Main {

    private static int answer = 0;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());

        String[] rooms = br.readLine().split(" ");
        String[] start = new String[n];
        for (int i = 0; i < rooms.length; i++) {
                start[i] = "0";
        }

        for (int i = 0; i < rooms.length; i++) {
            if (rooms[i].equals(start[i])) continue;
            toggleThree(start, i);
        }
        bw.write(String.valueOf(answer));
        bw.flush();
        bw.close();
    }
    private static void toggleThree(String[] a1, int index) {
        for(int i = 0; i < 3; i++) {
            if(i + index < a1.length) {
                toggle(a1, i + index);
            }
        }
        answer++;
    }

    private static void toggle(String[] a1, int index) {
        if(a1[index].equals("0")) a1[index] = "1";
        else a1[index] = "0";
    }
}

์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€