[백준 32964] 재미있는 파이프 퍼즐 [Java]

2025. 7. 30. 16:07PS 풀이/Baekjoon Online Judge

문제

http://boj.ma/32964

 

32964번: 재미있는 파이프 퍼즐

 

boj.ma

 


풀이

문제 요약

2 * N 공간에 있는 파이프를 조작해 도착지에 도착할 수 있는지 확인하자.

아이디어

이전 파이프 상태와 현재 영역의 파이프를 비교해 다음 영역이 이동 가능한 영역인지 확인하자.

처음과 마지막은 직접 확인해주고, 1 ~ N - 1 구간은 이전/현재 파이프 상태를 확인해 다음 영역으로 넘어갈 수 있는지 상태를 업데이트 해주자.

        // Solve
        boolean goUp = true, goDown = (down[0] == 'L');
        for (int i = 1; i < N - 1; ++i) {
            boolean goUpAndNext = false, goDownAndNext = false;
            if (goUp) {
                if (up[i] == 'I') {
                    goUpAndNext = true;
                } else if (up[i] == 'L' && down[i] == 'L') {
                    goDownAndNext = true;
                }
            }
            if (goDown) {
                if (down[i] == 'I') {
                    goDownAndNext = true;
                } else if (down[i] == 'L' && up[i] == 'L') {
                    goUpAndNext = true;
                }
            }
            goUp = goUpAndNext;
            goDown = goDownAndNext;
        }

        // Output
        System.out.println(
                goDown || goUp && up[N - 1] == 'L' ? "YES" : "NO"
        );
    }
}

풀이 시간

20분


소스코드

https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/normal/32964.java

 

problem-solving/baekjoon-online-judge/normal/32964.java at main · rogi-rogi/problem-solving

Daily Problem Solving Challenges. Contribute to rogi-rogi/problem-solving development by creating an account on GitHub.

github.com