Algorithm/Java

[백준/JAVA] 1343번: 폴리오미노

dbfl9911 2024. 7. 16. 14:21
반응형

- 정답 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    static String[] list;
    static int count = 0;
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String board = br.readLine(); // XXXXXX
        StringBuilder result = new StringBuilder(); // 결과 저장

        int i = 0;
        while(i < board.length()) {
            if(board.charAt(i) == 'X') {
                int count = 0; // 연속된 X개수 세기 위한 변수

                // 1. 연속된 'X'의 길이를 센다
                while(i < board.length() && board.charAt(i) == 'X') {
                    count++;
                    i++;
                }

                // 2. 연속된 'X'의 길이가 2와 4로 나누어지지 않는 경우 -1을 반환
                if(count % 2 != 0) {
                    System.out.println(-1);
                    return;
                }

                // 3. 연속된 'X'의 길이에 따라 'AAAA'와 'BB'배치
                // 4의 배수만큼 'AAAA' 배치
                while(count >= 4) {
                    result.append("AAAA");
                    count -= 4;
                }

                // 남은 'X'가 2개일 경우 'BB' 배치
                if(count == 2) {
                    result.append("BB");
                }
            }else{
                // 'X'가 아닌 경우 '.'를 그대로 결과에 추가
                result .append(board.charAt(i));
                i++;
            }
        }

        System.out.println(result.toString());

    }
}

- 코드 설명

폴리오미노 문제를 해결하기 위해서는 연속된 'X'의 길이에 따라 폴리오미노를 배치하는 방식으로 접근해야 합니다. 연속된 'X'의 길이가 2나 4로 나누어지지 않는 경우는 -1을 반환해야 합니다.

 

입력된 보드판을 읽어옵니다.

 

1.보드판을 순차적으로 탐색하면서 연속된 'X'의 길이를 셉니다.

2.연속된 'X'의 길이가 2와 4로 나누어지지 않는 경우 -1을 반환합니다.

3.연속된 'X'의 길이에 따라 'AAAA'와 'BB'를 배치합니다.

4.최종 결과를 출력합니다.

 

반응형