-
[백준/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.최종 결과를 출력합니다.
'Algorithm' 카테고리의 다른 글
[백준/JAVA] 1758번: 알바생 강호 (0) 2024.07.16 [백준/JAVA] 2217번: 로프 (0) 2024.07.16 [백준/JAVA] 14916번: 거스름돈 (1) 2024.07.16 [백준/JAVA] 9934번: 완전 이진 트리 (0) 2024.07.13 [백준/JAVA] 1991번: 트리 순회 (0) 2024.07.12