ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준/JAVA] 1343번: 폴리오미노
    Algorithm 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.최종 결과를 출력합니다.

     

Designed by Tistory.