https://www.acmicpc.net/problem/1343
문제
민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB
이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다.
폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 50이다.
출력
첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.
#include <iostream>
#include <string>
using namespace std;
int main(void){
string str;
cin >> str;
string answer;
answer = "";
int count = 0;
int temp = 0;
for(int i = 0;i<str.size();i++){
if(str[i] == '.'){
if(count % 2 != 0){
temp = -1;
cout << temp;
return 0;
}
else if(count % 2 == 0){
while(1){
if(count == 0){
break;
}
if(count >= 4 ){
answer = answer + "AAAA";
count = count - 4;
}
else if(count >= 2 && count < 4){
answer = answer + "BB";
count = count - 2;
}
}
}
count = 0;
answer = answer + '.';
}
else if(str[i] == 'X'){
count++;
}
}
if(count % 2 != 0){
temp = -1;
cout << temp;
return 0;
}
else{
while(1){
if(count == 0){
break;
}
if(count >= 4){
answer = answer + "AAAA";
count = count - 4;
}
else if(count >= 2 && count < 4){
answer = answer + "BB";
count = count - 2;
}
}
}
cout << answer;
}
'알고리즘' 카테고리의 다른 글
cin getline과 cin.ignore(), cin.fail(), cin.clear() (0) | 2022.06.04 |
---|---|
백준 14405 피카츄 C++ (0) | 2022.05.30 |
백준 2502 떡 먹는 호랑이 C++ (0) | 2022.05.25 |
백준 11508 C++ (0) | 2022.05.25 |
알고리즘 스터디 10주차 (0) | 2022.05.23 |