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.최종 결과를 출력합니다.
반응형