관리 메뉴

기억을 위한 기록들

[백준 1343: 폴리오미노] - C++ 본문

Coding Test - cpp/Greedy

[백준 1343: 폴리오미노] - C++

에드윈H 2021. 2. 4. 15:48

www.acmicpc.net/problem/1343

 

1343번: 폴리오미노

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

www.acmicpc.net

#include<iostream>
#include<string>
using namespace std; 
int main()
{
	string n;
	string result;

	cin >> n;

	if (n.size() == 1 && n[0]=='X'){
		cout << -1 << endl;
		return 0;
	}

	int i = 0;
	int cnt = 0;

	while (n[i] != '\0')
	{
		while (n[i] == 'X' || n[i] != '.')
		{
			i++;
			cnt++;

			if (n[i] == '\0')
				break;
		}

		if (cnt % 2 == 0)
		{
			while (4 <= cnt)
			{
				result += "AAAA";
				cnt -= 4;
			}
			while (2 <= cnt)
			{
				result += "BB";
				cnt -= 2;
			}
		}

		if (cnt != 0)
		{
			cout << -1 << endl;
			return 0;
		}
		if (n[i] == '.')
		{
			result += ".";
			i++;
		}
	}

	cout << result << endl;

	
	return 0;
}

'Coding Test - cpp > Greedy' 카테고리의 다른 글

[백준 11047: 동전 0] - C++  (0) 2021.02.08
[백준 11399: ATM] - C++  (0) 2021.02.08
[백준 1439: 뒤집기] - C++  (0) 2021.02.04
[백준 4796: 캠핑] - C++  (0) 2021.02.03
[프로그래머스 lv1: 체육복] - C++  (0) 2021.02.02