[백준 1343, Cpp] 폴리오미노

나무에물주기·2022년 10월 21일
0

Coding Test

목록 보기
59/77
// 백준 1343 폴리오미노
#include <iostream>
#include <string>

using namespace std;

int main()
{
    // 입력받을 문자열과 출력할 문자열 변수 생성
    string str, result;
    int count = 0;

    cin >> str;

    // 입력받은 문자열의 사이즈만큼 반복
    for (int i = 0; i < str.size(); i++)
    {
        // 문자열의 요소가 X면 count + 1
        if (str[i] == 'X') count++;
        // 문자열의 요소가 .이면 result 변수에 + '.'
        if (str[i] == '.')
        {
            result += '.';
            // 카운트가 홀수면 루프 탈출
            if (count % 2 != 0) break;
            // 아니면 카운트 초기화
            else count = 0;
        }
        // 카운트가 2이면서 문자열의 다음요소가 X가 아니면 
        if (count == 2 && str[i + 1] != 'X')
        {
            // 출력 변수에 + BB, 카운트 초기화
            result += "BB";
            count = 0;
        }
        // 카운트가 4면
        if (count == 4)
        {
            // 출력 변수에 + AAAA, 카운트 초기화
            result += "AAAA";
            count = 0;
        }     
    }
    // 카운트가 홀수면(폴리오미노로 다 덮을 수 없으면) -1 출력
    if (count % 2 == 1)
        cout << -1;
    // 아니면 result 출력
    else
        cout << result;

    return 0;
}
profile
개인 공부를 정리함니다

0개의 댓글