๐Ÿ’  BOJ

[BOJ][C++] ๋ฐฑ์ค€ 2849๋ฒˆ: ํ–‰์šด์˜ ๋ฐ”ํ€ด

์„ ๋‹ฌ 2024. 3. 6. 17:03
๋ฐ˜์‘ํ˜•

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

 

2840๋ฒˆ: ํ–‰์šด์˜ ๋ฐ”ํ€ด

์ฒซ์งธ ์ค„์— ๋งˆ์ง€๋ง‰ ํšŒ์ „์—์„œ ํ™”์‚ดํ‘œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž๋ถ€ํ„ฐ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ”ํ€ด์— ์ ์–ด๋†“์€ ์•ŒํŒŒ๋ฒณ์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋•Œ, ์–ด๋–ค ๊ธ€์ž์ธ์ง€ ๊ฒฐ์ •ํ•˜์ง€ ๋ชปํ•˜๋Š” ์นธ์€ '?'๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ, ์ƒ๋•์ด๊ฐ€ ์ ์–ด๋†“

www.acmicpc.net

 

 

๋ฌธ์ œ

์ƒ๋•์ด๋Š” ์ตœ๊ทผ์— ํ–‰์šด์˜ ๋ฐ”ํ€ด๋ฅผ ๊ตฌ๋งคํ–ˆ๋‹ค. ์ƒ๋•์ด๋Š” ๋ฐ”ํ€ด์˜ ๊ฐ ์นธ์— ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋ฅผ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ ์—ˆ๋‹ค.

 

๋ฐ”ํ€ด์— ๊ฐ™์€ ๊ธ€์ž๋Š” ๋‘ ๋ฒˆ ์ด์ƒ ๋“ฑ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋˜, ๋ฐ”ํ€ด๋Š” ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๋Œ์•„๊ฐ„๋‹ค. ๋ฐ”ํ€ด ์˜†์—๋Š” ํ™”์‚ดํ‘œ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด ํ™”์‚ดํ‘œ๋Š” ํ•ญ์ƒ ํ•œ ๊ณณ์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์œผ๋ฉฐ, ๋Œ์•„๊ฐ€๋Š” ๋™์•ˆ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ธ€์ž๋Š” ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ๋Š” 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;
}
๋ฐ˜์‘ํ˜•