반응형
이 문제에서 주의할 사항들
- 바퀴에 같은 글자는 두 번 이상 등장하지 않는다.
- 새로 지정할 칸에 ?가 아닌 다른 글자가 있으면 안 된다.
- ?는 두 번 이상 등장해도 괜찮다.
나는 1번을 늦게 파악했다. 문제를 제대로 읽어봤어야 했다.
3번은 어쩌면 당연한 것이지만, 1번을 처리하는 과정에서 A???와 같은 결과가 !로 바뀐다.
이를 주의해야 했다.
나는 이 문제를 vector를 이용해 풀었다.
코드 자체는 간단하다.
#include <cstdio>
#include <vector>
using namespace std;
int main() {
int N, K;
scanf("%d %d", &N, &K);
vector<char> wheel(N, '?');
auto iter = wheel.begin();
for (int i = 0; i < K; i++) {
int S;
char C;
scanf("%d %c", &S, &C);
S %= N;
for (int i = 0; i < S; i++) {
if (iter == wheel.begin())
iter = wheel.end() - 1;
else
--iter;
}
if (*iter == '?')
*iter = C;
else if (*iter != C) {
printf("!\n");
return 0;
}
}
for (auto outer = wheel.begin(); outer != wheel.end(); ++outer) {
for (auto inner = wheel.begin(); inner != wheel.end(); ++inner) {
if (*outer == *inner && outer != inner && *inner != '?') {
printf("!\n");
return 0;
}
}
}
for (int i = 0; i < N; i++) {
if (iter == wheel.end())
iter = wheel.begin();
printf("%c", *iter);
++iter;
}
printf("\n");
return 0;
}
반응형
'프로그래밍 > PS' 카테고리의 다른 글
[C++] 백준 7576번: 토마토 (0) | 2020.10.08 |
---|---|
[C++] 백준 2178번: 미로 탐색 (0) | 2020.10.06 |
[C++] 백준 1260번: DFS와 BFS (0) | 2020.10.04 |
[C++] 백준 1463번: 1로 만들기 (0) | 2020.09.30 |
[C++] 백준 18111번: 마인크래프트 (0) | 2020.09.27 |