๐Ÿงฉ Algorithm/[BOJ] Silver

BOJ 1158๋ฒˆ : ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ (C++/Silver 4)

devCloud 2022. 9. 3. 18:23
728x90
 

1158๋ฒˆ: ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ

์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ K ≤ N ≤ 5,000)

www.acmicpc.net

๋ฌธ์ œ

์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ N๋ช…์˜ ์‚ฌ๋žŒ์ด ์›์„ ์ด๋ฃจ๋ฉด์„œ ์•‰์•„์žˆ๊ณ , ์–‘์˜ ์ •์ˆ˜ K(≤ N)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด์ œ ์ˆœ์„œ๋Œ€๋กœ K๋ฒˆ์งธ ์‚ฌ๋žŒ์„ ์ œ๊ฑฐํ•œ๋‹ค. ํ•œ ์‚ฌ๋žŒ์ด ์ œ๊ฑฐ๋˜๋ฉด ๋‚จ์€ ์‚ฌ๋žŒ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ์›์„ ๋”ฐ๋ผ ์ด ๊ณผ์ •์„ ๊ณ„์†ํ•ด ๋‚˜๊ฐ„๋‹ค. ์ด ๊ณผ์ •์€ N๋ช…์˜ ์‚ฌ๋žŒ์ด ๋ชจ๋‘ ์ œ๊ฑฐ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†๋œ๋‹ค. ์›์—์„œ ์‚ฌ๋žŒ๋“ค์ด ์ œ๊ฑฐ๋˜๋Š” ์ˆœ์„œ๋ฅผ (N, K)-์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์ด๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด (7, 3)-์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์€ <3, 6, 2, 7, 5, 1, 4>์ด๋‹ค. N๊ณผ K๊ฐ€ ์ฃผ์–ด์ง€๋ฉด (N, K)-์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ K ≤ N ≤ 5,000)

 

์ถœ๋ ฅ

์˜ˆ์ œ์™€ ๊ฐ™์ด ์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.


์˜ˆ์ œ ์ž…๋ ฅ

7 3

์˜ˆ์ œ ์ถœ๋ ฅ

<3, 6, 2, 7, 5, 1, 4>

๋ฌธ์ œ ์„ค๋ช…

  1. 1~7๊นŒ์ง€ ์ฐจ๋ก€๋กœ ํ์— ๋„ฃ๋Š”๋‹ค. -> queue[1, 2, 3, 4, 5, 6, 7]
  2. 1๊ณผ 2๋Š” ํ์˜ ๋’ค๋กœ ๋ณด๋‚ด๊ณ , 3๋ฒˆ์งธ ์ˆœ์„œ์ธ 3์„ ๋จผ์ € ์ œ๊ฑฐ(์ถœ๋ ฅ)ํ•œ๋‹ค. -> <3
  3. 3์„ ์ œ๊ฑฐํ–ˆ์œผ๋‹ˆ 4๊ฐ€ 1๋ฒˆ์งธ ์ˆœ์„œ๊ฐ€ ๋œ๋‹ค. -> queue[4, 5, 6, 7, 1, 2]
  4. 4์™€ 5๋Š” ๋’ค๋กœ ๋ณด๋‚ด๊ณ  3๋ฒˆ์งธ ์ˆœ์„œ์ธ 6์„ ์ œ๊ฑฐ(์ถœ๋ ฅ)ํ•œ๋‹ค. -> <3, 6
  5. 6์„ ์ œ๊ฑฐํ–ˆ์œผ๋‹ˆ 7์ด 1๋ฒˆ์งธ ์ˆœ์„œ๊ฐ€ ๋œ๋‹ค. -> queue[7, 1, 2, 4, 5]
  6. 7๊ณผ 1์€ ๋’ค๋กœ ๋ณด๋‚ด๊ณ  3๋ฒˆ์งธ ์ˆœ์„œ์ธ 2๋ฅผ ์ œ๊ฑฐ(์ถœ๋ ฅ)ํ•œ๋‹ค. -> <3, 6, 2
  7. 2๋ฅผ ์ œ๊ฑฐํ–ˆ์œผ๋‹ˆ 4๊ฐ€ ๋‹ค์‹œ 1๋ฒˆ์งธ ์ˆœ์„œ๊ฐ€ ๋œ๋‹ค. -> queue[4, 5, 7, 1]
  8. 4์™€ 5๋Š” ๋’ค๋กœ ๋ณด๋‚ด๊ณ  3๋ฒˆ์งธ ์ˆœ์„œ์ธ 7์„ ์ œ๊ฑฐ(์ถœ๋ ฅ)ํ•œ๋‹ค. -> <3, 6, 2, 7
  9. ์œ„ ๊ณผ์ •์„ ํ์— ์ˆซ์ž 1๊ฐœ๊ฐ€ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.
  10. ๋งˆ์ง€๋ง‰ ๋‚จ์€ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๊ด„ํ˜ธ๋ฅผ ๋‹ซ๋Š”๋‹ค.

 

๋ฌธ์ œ ํ’€์ด

  • queue.front() : ์ตœ์ƒ์œ„ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜
  • queue.push() : ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
  • queue.pop() : ์ตœ์ƒ์œ„ ๋ฐ์ดํ„ฐ ์‚ญ์ œ

Solution

#include <iostream>
#include <queue>
using namespace std;

int main() {
    int N, K, num;
    cin >> N >> K;
    queue<int> que;
    for(int i=1; i<=N; i++)
        que.push(i);
    cout << '<';
    while(que.size() > 1){
        for(int i=0; i<K-1; i++){
            num = que.front();
            que.push(num);
            que.pop();
        }
        cout << que.front() << ", ";
        que.pop();
    }
    cout << que.front() << '>';
    return 0;
}
728x90