๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 2346๋ฒˆ - ํ’์„  ํ„ฐ๋œจ๋ฆฌ๊ธฐ

by ์•ˆ์ฃผํ˜• 2022. 3. 11.

๋ฌธ์ œ

 

2346๋ฒˆ: ํ’์„  ํ„ฐ๋œจ๋ฆฌ๊ธฐ

1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ N๊ฐœ์˜ ํ’์„ ์ด ์›ํ˜•์œผ๋กœ ๋†“์—ฌ ์žˆ๊ณ . i๋ฒˆ ํ’์„ ์˜ ์˜ค๋ฅธ์ชฝ์—๋Š” i+1๋ฒˆ ํ’์„ ์ด ์žˆ๊ณ , ์™ผ์ชฝ์—๋Š” i-1๋ฒˆ ํ’์„ ์ด ์žˆ๋‹ค. ๋‹จ, 1๋ฒˆ ํ’์„ ์˜ ์™ผ์ชฝ์— N๋ฒˆ ํ’์„ ์ด ์žˆ๊ณ , N๋ฒˆ ํ’์„ ์˜ ์˜ค๋ฅธ์ชฝ์— 1๋ฒˆ ํ’์„ 

www.acmicpc.net

 

์ฝ”๋“œ

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

using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    deque<pair<int,int>>dq; //{์ ์ˆ˜, ์ธ๋ฑ์Šค};
    vector<int>ans;
    
    int N; cin>>N;
    
    for(int i=0; i<N; i++){
        int num; cin>>num;
        dq.push_back({num,i});
    }
    
    while(!dq.empty()){
        int num = dq.front().first;
        int index = dq.front().second;
        ans.push_back(index+1);
        dq.pop_front();
        
        for (int i = 1; i < num; i++) {
            dq.push_back(dq.front());
            dq.pop_front();
            
        }
        for (int i = 0; i > num; i--) {
            dq.push_front(dq.back());
            dq.pop_back();
            
        }
    }
   
    for(int i: ans) cout<<i<<' ';
}

 

ํ’€์ด(ํ’€์ด ์‹œ๊ฐ„: 50๋ถ„)

์›ํ˜• ํ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์— ํ™•์‹คํ•˜๊ฒŒ ์›ํ˜• ํ๊ฐ€ ์–ด๋– ํ•œ ์›๋ฆฌ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ๋˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

์›ํ˜• ํ ๊ฐœ๋…์— ๊ด€ํ•ด์„œ๋Š” ์œ„ ์˜์ƒ์„ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ’€์ด๊ฐ€ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ ์ด์œ ๋Š” ํ’์„  ์ด๋™์‹œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ด๋™์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•  ๋•Œ์—๋„ [์ˆซ์ž - 1] ๋งŒํผ ์ด๋™ํ•˜์—ฌ ๊ณ„์† ๋””๋ฒ„๊น…ํ•˜๋Š๋ผ ์˜ค๋ž˜ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. 

  • ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œ:  [์ˆซ์ž -1] ๋งŒํผ ์ด๋™
  • ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œ: [์ˆซ์ž]๋งŒํผ ์ด๋™

 

๋Œ“๊ธ€