https://www.acmicpc.net/problem/2840
๋ฌธ์
์๋์ด๋ ์ต๊ทผ์ ํ์ด์ ๋ฐํด๋ฅผ ๊ตฌ๋งคํ๋ค. ์๋์ด๋ ๋ฐํด์ ๊ฐ ์นธ์ ์ํ๋ฒณ ๋๋ฌธ์๋ฅผ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ ์๋ค.
๋ฐํด์ ๊ฐ์ ๊ธ์๋ ๋ ๋ฒ ์ด์ ๋ฑ์ฅํ์ง ์๋๋ค. ๋, ๋ฐํด๋ ์๊ณ๋ฐฉํฅ์ผ๋ก๋ง ๋์๊ฐ๋ค. ๋ฐํด ์์๋ ํ์ดํ๊ฐ ์๋๋ฐ, ์ด ํ์ดํ๋ ํญ์ ํ ๊ณณ์ ๊ฐ๋ฆฌํค๊ณ ์์ผ๋ฉฐ, ๋์๊ฐ๋ ๋์ ๊ฐ๋ฆฌํค๋ ๊ธ์๋ ๋ฐ๋๊ฒ ๋๋ค. ์์ ๊ทธ๋ฆผ์์๋ H๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ค.
์๋์ด๋ ๋ฐํด๋ฅผ ์ฐ์ํด์ K๋ฒ ๋๋ฆด ๊ฒ์ด๋ค. ๋งค๋ฒ ๋ฐํด๋ฅผ ๋๋ฆด ๋ ๋ง๋ค, ์๋์ด๋ ํ์ดํ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ธ์๊ฐ ๋ณํ๋ ํ์์ ์ด๋ค ๊ธ์์์ ํ์ ์ ๋ฉ์ถ์๋์ง๋ฅผ ์ข ์ด์ ์ ๋๋ค.
ํฌ์์ด๋ ์๋์ด๊ฐ ์ ์ด๋์ ์ข ์ด๋ฅผ ๋ฐ๊ฒฌํ๋ค. ๊ทธ ์ข ์ด๋ฅผ ๋ฐํ์ผ๋ก ์๋์ด๊ฐ ๋ฐํด์ ์ ์ ์ํ๋ฒณ์ ์์๋ด๋ ค๊ณ ํ๋ค.
์๋์ด๊ฐ ์ข ์ด์ ์ ์ด๋์ ๋ด์ฉ๊ณผ ๋ฐํด์ ์นธ์ ์๊ฐ ์ฃผ์ด์ก์ ๋, ๋ฐํด์ ์ ์ด๋์ ์ํ๋ฒณ์ ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
ํ์ด
11%์์ ํ๋ ธ์ต๋๋ค ๊ฐ ๋ฌ๋ค๋ฉด
๋ฐํด์ ๊ฐ์ ๊ธ์๋ ๋ ๋ฒ ์ด์ ๋ฑ์ฅํ์ง ์๋๋ค.
ใด ์ ์กฐ๊ฑด์ ์ก์๋๋์ง ์๊ฐํ์
๋ฐ๋ก
4 4
1 A
1 B
1 C
1 A
์ฝ๋
#include <iostream>
#include <vector>
using namespace std;
string solution(int n, int k) {
vector<bool> alphabetUsed(26, false); // ์ฌ์ฉ๋ ์ํ๋ฒณ ํ์
vector<char> wheel(n,'?'); // ๋ฐํด ๋ฐฐ์ด ๊ธฐ๋ณธ๊ฐ์ ๋ฌผ์ํ
int roll, cur=0; char c;
for(int i=0; i<k; i++) { // ๋๋ ค๋๋ ค ๋๋ฆผํ
cin >> roll >> c;
cur += roll;
cur %= n;
// ๊ฐ์ ์นธ๋ ์๋๋ฐ ์ด๋ฏธ ์ด ์ํ๋ฒณ์ธ ๊ฒฝ์ฐ
if(wheel[cur]!=c && alphabetUsed[c-'A']) {
return "!";
}
// ๊ฐ์ ์นธ๋ ์๋๋ฐ ์ด๋ฏธ ๋ฌด์ธ๊ฐ ์จ์์ ๊ฒฝ์ฐ
if(wheel[cur]!=c && wheel[cur]!='?') {
return "!";
}
wheel[cur] = c;
alphabetUsed[c-'A'] = true;
}
string ans = "";
for(int i=0; i<n; i++) {
ans += wheel[((cur-i)+n)%n];
}
return ans;
}
int main() {
int n,k;
cin >> n >> k;
cout << solution(n,k);
return 0;
}
'๐ BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 15686๋ฒ: ์นํจ๋ฐฐ๋ฌ (0) | 2024.03.11 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 1037๋ฒ: ์ฝ์ (0) | 2024.03.08 |
[BOJ][C++] ๋ฐฑ์ค 14503๋ฒ: ๋ก๋ด ์ฒญ์๊ธฐ (0) | 2023.11.23 |
[BOJ][C++] ๋ฐฑ์ค 2839๋ฒ: ์คํ ๋ฐฐ๋ฌ (0) | 2023.11.02 |
[BOJ][C++] ๋ฐฑ์ค 1296๋ฒ: ๋์นญ ์ฐจ์งํฉ (0) | 2023.10.16 |