하루하루 꾸준히, 인생은 되는대로

알고리즘

백준 1343 폴리오미노 C++

긤효중 2022. 5. 29. 21:22

https://www.acmicpc.net/problem/1343

 

1343번: 폴리오미노

첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.

www.acmicpc.net


문제

민식이는 다음과 같은 폴리오미노 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