[๋ฐฑ์ค€] 11866 ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ0 - ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ

2024. 8. 27. 16:01ยท๐Ÿ’ป Algorithms/๋ฐฑ์ค€

[ ๋ฌธ์ œ๋งํฌ ]

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

 

๐Ÿšฉ ์กฐ๊ฑด

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

 

 

๐Ÿšฉ ์ ‘๊ทผ

1 -> ํ ๋˜๋Š” ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•˜์ž

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ•จ

 

 

๐Ÿšฉ ์‹œํ–‰์ฐฉ์˜ค

iterator์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ญ์ƒ segfault๊ฐ€ ๋‚œ๋‹ค..ใ… 

- iterator++, iterator-- ๋“ฑ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ iterator+2 ๋“ฑ ์ˆซ์ž์™€ ์—ฐ์‚ฐ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค

 

- list.push_back(n) : iterator๊ฐ€ ๋‹ค์Œ ์›์†Œ๊ฐ€ ๋“ค์–ด๊ฐˆ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ•จ๊ป˜ ์›€์ง์ธ๋‹ค

- list.begin() : ๋งจ ์•ž์˜ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค

- list.end() : ๋งจ ๋งˆ์ง€๋ง‰์˜ ๋‹ค์Œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค

 

์ž…๋ ฅ์ด "7 3" ์ผ ๋•Œ list์™€ iterator์˜ ๋ณ€ํ™”

 

 

๐Ÿ’ป ์ฝ”๋“œ (C++)

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

list<int> l;
list<int>::iterator iter;
int cnt;
int main(){
    int N, K;
    cin>>N>>K;
    for(int i=1;i<=N;i++){
        l.push_back(i);
    }
    
    iter = l.begin();
    cout<<"<";
    while(!l.empty()){
        for(int i=0;i<K;i++){
            if(iter==l.end()){
                iter = l.begin();
            }
            iter++;
        }
        
        if(cnt!=N-1){
            cout << *(--iter) << ", ";
        }else{
            cout << *(--iter) << ">";
            break;
        }
        iter = l.erase(iter);
        cnt++;
    }
}

 

+ STL queue๋ฅผ ์ด์šฉํ•œ ๊ตฌํ˜„

์›ํ˜• ํ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผํ• ์ง€ ๊ฐ์ด ์•ˆ ์™€์„œ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์ด popํ•œ ์›์†Œ๋ฅผ ๋งจ ๋’ค๋กœ ๋„ฃ์œผ๋ฉด ์›ํ˜• ํ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

- stack, queue์—๋Š” iterator๊ฐ€ ์—†๋‹ค

- vector, deque, set, map, list ๋“ฑ์—๋งŒ iterator๊ฐ€ ์žˆ๋‹ค

 

- STL queue๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  queue๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋ฐฐ์—ด ๋˜๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค

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

queue<int> q;
int cnt;
int main() {
    int N, K;
    cin >> N >> K;
    for (int i = 1; i <= N; i++) {
        q.push(i);
    }

    cout << "<";
    while (!q.empty()) {
        for (int i = 0; i < K-1; i++) {
            int next = q.front();
            q.pop();
            q.push(next);
        }
        int next = q.front();
        if (cnt != N - 1)
            cout << next << ", ";
        else
            cout << next << ">";
        cnt++;
        q.pop();
    }
}

'๐Ÿ’ป Algorithms > ๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 1003 ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜ - ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ  (0) 2024.08.31
[๋ฐฑ์ค€] 1991 ํŠธ๋ฆฌ ์ˆœํšŒ - ํŠธ๋ฆฌ, ์žฌ๊ท€  (0) 2024.08.27
[๋ฐฑ์ค€] 1181 ๋‹จ์–ด ์ •๋ ฌ - ์ •๋ ฌ  (0) 2024.08.25
[๋ฐฑ์ค€] 10814 ๋‚˜์ด์ˆœ ์ •๋ ฌ - ์ •๋ ฌ  (0) 2024.08.24
[๋ฐฑ์ค€] 5397 ํ‚ค๋กœ๊ฑฐ - ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ  (0) 2024.08.24
'๐Ÿ’ป Algorithms/๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 1003 ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜ - ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • [๋ฐฑ์ค€] 1991 ํŠธ๋ฆฌ ์ˆœํšŒ - ํŠธ๋ฆฌ, ์žฌ๊ท€
  • [๋ฐฑ์ค€] 1181 ๋‹จ์–ด ์ •๋ ฌ - ์ •๋ ฌ
  • [๋ฐฑ์ค€] 10814 ๋‚˜์ด์ˆœ ์ •๋ ฌ - ์ •๋ ฌ
์ ๋„
์ ๋„
  • ์ ๋„
    ๋„์ 
    ์ ๋„
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (30)
      • ๐Ÿ’ป Algorithms (28)
        • ๋ฐฑ์ค€ (22)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
      • ๐Ÿ”Ž Deep Learning (0)
      • ๐Ÿ’ฅ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… (1)
      • ๐Ÿ•น Unity (1)
      • ๐Ÿฅ” ์ž‰ํ…… (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • Blog
    • Github
    • Velog
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
์ ๋„
[๋ฐฑ์ค€] 11866 ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ0 - ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”