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

[BOJ][C++] ๋ฐฑ์ค€ 20301๋ฒˆ: ๋ฐ˜์ „ ์š”์„ธํ‘ธ์Šค

์„ ๋‹ฌ 2023. 4. 8. 17:32
๋ฐ˜์‘ํ˜•

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

 

20301๋ฒˆ: ๋ฐ˜์ „ ์š”์„ธํ‘ธ์Šค

์ฒซ์งธ ์ค„์— ์ •์ˆ˜ $N$, $K$, $M$์ด ์ฃผ์–ด์ง„๋‹ค. ($1 \leq N \leq 5\ 000$, $1 \leq K, M \leq N$)

www.acmicpc.net

 

๋ฌธ์ œ

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

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

์ด ๋ฌธ์ œ์˜ ๋‹ต์„ (N, K)–์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์ด๋ผ๊ณ  ํ•˜๋ฉฐ, (7, 3)–์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์€ โŸจ3,6,2,7,5,1,4โŸฉ๊ฐ€ ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๊ณ„์† ๋Œ์•„๊ฐ€๋Š” ๊ฑด ๋„ˆ๋ฌด ์ง€๋ฃจํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ์— ์žฌ๋ฏธ๋ฅผ ๋”ํ•˜๊ธฐ ์œ„ํ•ด M๋ช…์˜ ์‚ฌ๋žŒ์ด ์ œ๊ฑฐ๋  ๋•Œ๋งˆ๋‹ค ์›์„ ๋Œ๋ฆฌ๋Š” ๋ฐฉํ–ฅ์„ ๊ณ„์†ํ•ด์„œ ๋ฐ”๊พธ๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ •์˜๋œ ์ƒˆ๋กœ์šด ๋ฌธ์ œ์˜ ๋‹ต์„ (N, K, M)–๋ฐ˜์ „ ์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์ด๋ผ๊ณ  ํ•˜๋ฉฐ, (7, 3, 4)–๋ฐ˜์ „ ์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์€ โŸจ3,6,2,7,1,5,4โŸฉ๊ฐ€ ๋œ๋‹ค.

โ€ŠN, K, M์ด ์ฃผ์–ด์งˆ ๋•Œ, (N, K, M)–๋ฐ˜์ „ ์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์„ ๊ณ„์‚ฐํ•ด ๋ณด์ž.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ •์ˆ˜ N, K, M์ด ์ฃผ์–ด์ง„๋‹ค. (1≤N≤5 000, 1≤K,M≤N)

์ถœ๋ ฅ

(N, K, M)–๋ฐ˜์ „ ์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์„ ์ด๋ฃจ๋Š” ์ˆ˜๋“ค์„ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

[๐Ÿ•๏ธ ICPC Sinchon Novice] - [C/C++] ๋ฐฑ์ค€ 1158๋ฒˆ : ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ

 

[C/C++] ๋ฐฑ์ค€ 1158๋ฒˆ : ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ

https://www.acmicpc.net/problem/1158 1158๋ฒˆ: ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ ์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net ๋ฌธ์ œ ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€

whkakrkr.tistory.com

 

๋ฐ˜๋Œ€๋ฐฉํ–ฅ๋„ ๊ตฌํ˜„ํ•ด์ฃผ๋ฉด ๋œ๋””

์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ๋Š” ํ๋ฅผ ์ด์šฉํ–ˆ๋‹ค. ์–‘๋ฐฉํ–ฅ์„ ์œ„ํ•ด ๋ฑ์„ ์ด์šฉํ•˜์ž

 

#include <iostream>
#include <vector>
#include <deque>

using namespace std;

int main() {
    int n, k, m;
    cin >> n >> k >> m;
    
    vector<int> ans;
    deque<int> q;
    for(int i=1; i<=n; i++)
        q.push_back(i);
    
    int turn = 1;
    bool isReverse = false;
    while(!q.empty()) {
        if(isReverse) {
            if(turn%k == 0) {
                ans.push_back(q.back());
                if(ans.size()%m == 0)
                    isReverse = !isReverse;
            }
            else q.push_front(q.back());
            q.pop_back();
        } else {
            if(turn%k == 0) {
                ans.push_back(q.front());
                if(ans.size()%m == 0)
                    isReverse = !isReverse;
            }
            else q.push_back(q.front());
            q.pop_front();
        }
        
        turn++;
    }
    
    for(int i: ans)
        cout << i << "\n";
        
    return 0;
}
๋ฐ˜์‘ํ˜•