[백준] 15729: 방탈출 - JAVA

https://www.acmicpc.net/problem/15729

풀이

그리디 문제.

불이 켜진 상태를 주어진 상태와 똑같게 만들어야 한다.

스위치는 자신과 오른쪽 두 개 스위치를 한번에 누르게 된다.

왼쪽부터 탐색할 때 이전 스위치에는 영향을 주지 않는다는 것.

왼쪽부터 오른쪽으로 탐색하며 정답과 상태가 다른 스위치만 눌러가며 카운트했다.


메모리: 77944KB

시간: 440ms

언어: Java 11

코드

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

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

        int[] after = new int[N];
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            after[i] = Integer.parseInt(st.nextToken());
        }

        int[] before = new int[N];
        int ans = 0;
        for (int i = 0; i < N; i++) {
            if (before[i] != after[i]) {
                ans++;
                for (int j = i; j < N && j < i + 3; j++) {
                    before[j] = Math.abs(before[j] - 1);
                }
            }
        }

        System.out.println(ans);
    }

}