티스토리 뷰

백준

백준 소스코드 [C++] 1343 폴리오미노

Hani_Levenshtein 2020. 8. 21. 00:42

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

 

1343번: 폴리오미노

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

www.acmicpc.net

백준 소스코드 [C++] 1343 폴리오미노

#include <iostream>
#include <utility>
#include <vector>
#include <algorithm>
#include <deque>
using namespace std;
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	string s;
	vector <char> print;
	cin >> s;
	bool ox=false;
	for (int i = 0;i < (int)s.size();i++) {
		if (s[i] == '.') print.push_back('.');
		else {
			if (i + 1 == (int)s.size() || s[i + 1] == '.') {
				ox = true;
				break;
			}
			else if (i + 4 <= (int)s.size() && s[i + 2] == 'X' && s[i + 3] == 'X' && s[i] == 'X') {
				print.push_back('A');
				print.push_back('A');
				print.push_back('A');
				print.push_back('A');
				i = i + 3;
			}
			else if (s[i + 1] == 'X')
			{
				print.push_back('B');
				print.push_back('B');
				i = i + 1;
			}
			
		}
	}
	if (ox == true) cout << "-1";
	else for (int i = 0;i < (int)print.size();i++) cout << print[i]; 
	return 0;
}
댓글