티스토리 뷰
https://www.acmicpc.net/problem/1343
1343번: 폴리오미노
첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.
www.acmicpc.net
연속된 X의 갯수를 카운트해서
홀수면 -1 출력후 종료하고
짝수면 적절하게 폴리오미노를 삽입한다.
주어진 문자열의 마지막을 식별하기 위해 마지막에 'Y'를 삽입했다.
#include <iostream>
#include <string>
using namespace std;
string s;
string ans = "";
int main()
{
cin >> s;
s.push_back('Y'); // 문자열의 마지막 표시
int Xcnt = 0;
// 연속된 X의 갯수를 카운트해서 홀수면 -1 출력 후 종료
// 짝수면 적절한 폴리오미노 삽입
for(int i = 0; i < s.size(); i++)
{
if(s[i] == 'X')
Xcnt++;
if(s[i] == '.' || s[i] == 'Y')
{
// X갯수 짝수일때
if(Xcnt % 2 == 0)
{
while(Xcnt > 0)
{
if(Xcnt >= 4)
{
for(int j = 0; j < 4; j++)
ans.push_back('A');
Xcnt -= 4;
}
else if(Xcnt == 2)
{
for(int j = 0; j < 2; j++)
ans.push_back('B');
Xcnt -= 2;
}
}
}
else
{
cout << -1;
return 0;
}
if(s[i] == '.')
ans.push_back('.');
}
}
cout << ans;
}
'PS' 카테고리의 다른 글
백준 11501. 주식 (0) | 2021.08.13 |
---|---|
백준 9237. 이장님 초대 (0) | 2021.08.13 |
백준 1041. 주사위 (0) | 2021.08.11 |
백준 11497. 통나무 건너뛰기 (0) | 2021.08.11 |
백준 15903. 카드 합체 놀이 (0) | 2021.08.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- CSS
- Brute Force
- 재귀
- floyd warshall
- Implementation
- graph
- Unity
- binary search
- priority queue
- 자료구조
- DP
- BFS
- C
- 조합
- Spring
- C++
- dfs
- back tracking
- recursion
- greedy
- permutation
- Tree
- MVC
- Stack
- Kruskal
- db
- Dijkstra
- Python
- two pointer
- 이분탐색
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함