ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

์ฒ˜์Œ ์ด ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์ƒ๊ฐ๋‚œ ๊ฒƒ์€ .. ์›ํ˜• ํ์˜€๋‹ค ๊ทธ๋ž˜์„œ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์•˜์œผ๋‚˜.. ์‚ฌ๋žŒ๋“ค์ด ์ œ๊ฑฐ๋ ๋•Œ๋งˆ๋‹ค ๋นˆ ๊ณต๊ฐ„์„ ๋•ก๊ฒจ์„œ ๋‚ด๋ ค์™€์•ผ ํ•˜๊ณ ?... ์ข€ ๊นŒ๋‹ค๋กœ์› ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•„์„œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜๋‹ค

 

๋ฐ”๋กœ C++์˜ SLT์ค‘ ํ•˜๋‚˜์ธ Queue๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ

k๋ฒˆ์งธ ์‚ฌ๋žŒ์ด ์ œ๊ฑฐ๋  ๋•Œ๋Š” pop์„ ํ•˜๋ฉด ๋˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” ๋งจ ์•ž ์›์†Œ(front)๋ฅผ ํ์— pushํ•œ ๋’ค pop์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ๊ฐ€ empty๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค

 

// BOJ 1158๋ฒˆ : ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ
#include <iostream>
#include <queue>
using namespace std;

int main() {
    int n, k; // n: ์‚ฌ๋žŒ ์ˆ˜ / k: k๋ฒˆ์งธ ์‚ฌ๋žŒ ์ œ๊ฑฐ
    cin >> n >> k;
    queue <int> q; // q ์ƒ์„ฑ
    int count = 1; // ์ „์ฒด ์ˆซ์ž ์„ธ๋Š” ๋ณ€์ˆ˜
    int result = 1; // ์ˆœ์—ด ์ถœ๋ ฅ์ด ์–ผ๋งˆ๋‚˜ ๋˜์—ˆ๋Š”์ง€ ์ธก์ • ๋ณ€์ˆ˜

    for(int i = 1; i <= n; i++){
        q.push(i); // ํ์— ์ˆœ์„œ๋Œ€๋กœ ์ˆซ์ž ์ €์žฅ
    }

    cout << "<";
    while(q.size()){ // ํ์— ์›์†Œ๊ฐ€ ์กด์žฌํ•  ๋•Œ
        if(count % k == 0){ // ์ˆซ์ž ์ถœ๋ ฅ (k๋ฒˆ์งธ)
            if(result == n){ // ๋งŒ์•ฝ ์ถœ๋ ฅ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ผ๋ฉด
                cout << q.front() << ">"; // ์ถœ๋ ฅํ•˜๊ณ  ๋‹ซ์•„์คŒ
                break; // ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ
            }
            cout << q.front() << ", "; // ์›์†Œ ์ถœ๋ ฅํ•ด ์คŒ
            q.pop(); // ์ถœ๋ ฅํ•œ ์›์†Œ๋Š” ์ œ๊ฑฐ
            result++; // ์ถœ๋ ฅํ–ˆ์œผ๋ฏ€๋กœ result ์ฆ๊ฐ€
        }
        else{ // ์ถœ๋ ฅํ•  ๋•Œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด
            q.push(q.front()); // ๋งจ ์•ž ์›์†Œ๋ฅผ ๋‹ค์‹œ ๋’ค์— ์ถ”๊ฐ€
            q.pop(); // ๋’ค์— ์ถ”๊ฐ€ํ–ˆ์œผ๋ฏ€๋กœ ๋งจ ์•ž ์›์†Œ ์ œ๊ฑฐ
        }
        count++; // count ๋ณ€์ˆ˜ ์ฆ๊ฐ€
    }
}

๋งจ ๋ '>' ๋‹ซ๋Š” ๊ณผ์ •์—์„œ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ๊นŒ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ result ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ์—ˆ๋‹ค

 

Comments