1343
#include <stdio.h>
#include <string.h>
int main(void){
char str [50] ={0};
scanf("%s", &str);
int count = 0, is_x = 0, is_break = 0;
char result[strlen(str)+1];
// 폴리오미노
for(int i = 0; i <= strlen(str); i++){
// 보드판의 문자열 구분
if(str[i] == 'X'){
// X면 count 증가
count ++;
is_x = 1;
}
else if(str[i] == '.'){
result[i] = '.';
is_x = 0;
}
else{
result[i] = '\0';
}
// 만약 현재 값이 X가 아니거나
// 현재 인덱스가 마지막인덱스일 경우
if(!is_x || i == (strlen(str))){
// 만약 X의 개수가 홀수 일 경우
if(count % 2 == 1){
// 덮을 수 없어 중단
is_break = 1;
break;
}
// 만약 X의 개수가 2개면
// result배열의 i-1, i-2에 B 저장
if(count == 2){
count = 0;
result[i-2] = 'B';
result[i-1] = 'B';
}
}
else{
// 만약 X의 개수가 4개면
// result배열의 i~i-3번째에 A 저장
if(count == 4){
count = 0;
result[i-3] = 'A';
result[i-2] = 'A';
result[i-1] = 'A';
result[i] = 'A';
}
}
}
// 만약 중단되었다면
if(is_break){
// -1 출력
printf("-1");
}
else{
// 중단 안되었으면 result 출력
printf("%s", &result);
}
return 0;
}

코드가 드러븐편
'백준' 카테고리의 다른 글
| [ 백준 / C ] 10804번 : 카드 역배치 (0) | 2025.09.26 |
|---|---|
| [ 백준 / C ] 5698번 : Tautogram (0) | 2025.09.25 |
| [ 백준 / C ] 1681번 : 줄 세우기 (0) | 2025.09.23 |
| [ 백준 / C ] 5339번 : 콜센터 (0) | 2025.09.22 |
| [ 백준 / C ] 9295번 : 주사위 (0) | 2025.09.19 |