๐Ÿ•๏ธ ICPC Sinchon/Linear Data Structure

[BOJ S5][C++] ๋ฐฑ์ค€ 11866๋ฒˆ : ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ 0

์„ ๋‹ฌ 2022. 9. 12. 21:27
๋ฐ˜์‘ํ˜•

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

 

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

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

์ถœ๋ ฅ

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

 

ํ’€์ด

ํ !!!! ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค

 

k๋ฒˆ์งธ์ผ๋•Œ๋งˆ๋‹ค ์‚ญ์ œํ•ด์ฃผ๊ณ ,

๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ƒฅ ๋’ค๋กœ ๋ณด๋‚ด๋ฒ„๋ฆฌ๋Š” ๋ฐฉ์‹

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

int main() {
    int n,k;
    queue<int> q;
    vector<int> ans;
    
    cin >> n >> k;
    for(int i=1; i<=n; i++) {
        q.push(i);
    }
    
    for(int i=1; !q.empty(); i++){
        if(i%k == 0) {
            ans.push_back(q.front());
        } else {
            q.push(q.front());
        }
        q.pop();
    }
    
    cout << "<";
    for(int i=0; i<ans.size()-1; i++) {
        cout << ans[i] << ", ";
    }
    cout << ans[ans.size()-1] << ">";
    
    return 0;
}

/*
 */

 

์•„๋ž˜๋Š” solution ํ•จ์ˆ˜ํ™” (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค)

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

vector<int> solution(int n, int k) {
    vector<int> ans;
    queue<int> q;

    for(int i=1; i<=n; i++) {
        q.push(i);
    }
    
    for(int i=1; !q.empty(); i++){
        if(i%k == 0) {
            ans.push_back(q.front());
        } else {
            q.push(q.front());
        }
        q.pop();
    }
    
    return ans;
}

int main() {
    int n,k;
    cin >> n >> k;
    
    vector<int> ans;
    ans = solution(n, k);
    
    cout << "<";
    for(int i=0; i<n-1; i++) {
        cout << ans[i] << ", ";
    }
    cout << ans[ans.size()-1] << ">";
    
    return 0;
}

/*
 */
๋ฐ˜์‘ํ˜•