카테고리 없음

[백준/c++] 1343번: 폴리오미노

녕이 2022. 7. 12. 17:09
728x90

 

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

 

1343번: 폴리오미노

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

www.acmicpc.net

 

 

 

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    string s, a;
    int num = 0;
    cin >> s;
    int len = s.size();

    int i = 0;
    while(i < len){
        if(s[i] == '.'){
            if(num > 0){
                if(num %2!=0){ //홀수면 바로 -1 리턴
                    cout << "-1\n";
                    return 0;
                }
                for(int i=0; i<num/4; i++){
                    a += "AAAA";
                }
                num %= 4;
                for(int i=0; i<num/2; i++){
                    a += "BB";
                }
                num = 0; //초기화
            }
            a += '.';
        }else{
            num++;
        }
        i++;
    }
    
    if(num % 2 != 0){
        cout << "-1\n";
        return 0;
    }
    for(int i=0; i<num/4; i++){
        a += "AAAA";
    }
    num %= 4;
    for(int i=0; i<num/2; i++){
        a += "BB";
    }
    
    cout << a << '\n';
    return 0;
}

 

 

 

728x90