๐Ÿ’ป

[๋ฐฑ์ค€] ์‹œ๋ฎฌ๋ ˆ์ด์…˜ - 2164. ์นด๋“œ2 ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œํ’€์ด Baekjoon

[๋ฐฑ์ค€] ์‹œ๋ฎฌ๋ ˆ์ด์…˜ - 2164. ์นด๋“œ2

๋˜ํšจ๋‹ˆ 2020. 3. 13. 22:04

๋ฌธ์ œ

N์žฅ์˜ ์นด๋“œ๊ฐ€ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์นด๋“œ๋Š” ์ฐจ๋ก€๋กœ 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™์–ด ์žˆ์œผ๋ฉฐ, 1๋ฒˆ ์นด๋“œ๊ฐ€ ์ œ์ผ ์œ„์—, N๋ฒˆ ์นด๋“œ๊ฐ€ ์ œ์ผ ์•„๋ž˜์ธ ์ƒํƒœ๋กœ ์ˆœ์„œ๋Œ€๋กœ ์นด๋“œ๊ฐ€ ๋†“์—ฌ ์žˆ๋‹ค.

์ด์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋™์ž‘์„ ์นด๋“œ๊ฐ€ ํ•œ ์žฅ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค. ์šฐ์„ , ์ œ์ผ ์œ„์— ์žˆ๋Š” ์นด๋“œ๋ฅผ ๋ฐ”๋‹ฅ์— ๋ฒ„๋ฆฐ๋‹ค. ๊ทธ ๋‹ค์Œ, ์ œ์ผ ์œ„์— ์žˆ๋Š” ์นด๋“œ๋ฅผ ์ œ์ผ ์•„๋ž˜์— ์žˆ๋Š” ์นด๋“œ ๋ฐ‘์œผ๋กœ ์˜ฎ๊ธด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด N=4์ธ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์ž. ์นด๋“œ๋Š” ์ œ์ผ ์œ„์—์„œ๋ถ€ํ„ฐ 1234 ์˜ ์ˆœ์„œ๋กœ ๋†“์—ฌ์žˆ๋‹ค. 1์„ ๋ฒ„๋ฆฌ๋ฉด 234๊ฐ€ ๋‚จ๋Š”๋‹ค. ์—ฌ๊ธฐ์„œ 2๋ฅผ ์ œ์ผ ์•„๋ž˜๋กœ ์˜ฎ๊ธฐ๋ฉด 342๊ฐ€ ๋œ๋‹ค. 3์„ ๋ฒ„๋ฆฌ๋ฉด 42๊ฐ€ ๋˜๊ณ , 4๋ฅผ ๋ฐ‘์œผ๋กœ ์˜ฎ๊ธฐ๋ฉด 24๊ฐ€ ๋œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ 2๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ๋‚˜๋ฉด, ๋‚จ๋Š” ์นด๋“œ๋Š” 4๊ฐ€ ๋œ๋‹ค.

N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ œ์ผ ๋งˆ์ง€๋ง‰์— ๋‚จ๊ฒŒ ๋˜๋Š” ์นด๋“œ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

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

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋‚จ๊ฒŒ ๋˜๋Š” ์นด๋“œ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ1

6

 

์˜ˆ์ œ ์ถœ๋ ฅ1

4

 

์ƒ๊ฐ

 

โ€ป ํ์™€ ๋ฑ

 

ํ(Queue)

- FIFO

- ๋’ค์— ๋„ฃ๊ณ  ์•ž์—์„œ ๋‚˜์˜ค๋Š” ๊ตฌ์กฐ

  • empty
  • size
  • front
  • back
  • push
  • pop

๋ฑ(Deque = Doble Ended Queue

- ์–‘์ชฝ ๋(์ „๋ฉด ๋˜๋Š” ํ›„๋ฉด)์— ๋‘˜๋‹ค ์ ‘๊ทผ ๊ฐ€๋Šฅ

- ๋ฒกํ„ฐ์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋ฒกํ„ฐ๋Š” ๋ณ€๊ฒฝ ์‹œ ์žฌํ• ๋‹น ํ•ด์•ผํ•˜๋Š” ๋‹จ์ผ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ deque๋Š” ๋‹ค๋ฅธ ์ฒญํฌ๋กœ ๋ถ„์‚ฐ๋  ์ˆ˜ ์žˆ๋‹ค.

- ์‹œ์ž‘ ๋˜๋Š” ๋ ์™ธ์˜ ์œ„์น˜์—์„œ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์€ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ๋‹ค.

  • empty
  • push_back
  • push_front
  • pop_back
  • pop_front

[์ฐธ๊ณ ]http://www.cplusplus.com/reference/deque/deque/

์ž‘์„ฑํ•œ ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <vector>
#include <queue>
 
using namespace std;
 
int main(int argc, const char * argv[]) {
    // insert code here...
 
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    int N;
    cin >> N;
    
    vector<int> a(N);
    
    queue<int> q;
    
    for(int i=0; i<N; i++){
        q.push(i+1);
    }
    
    for(int i=0; i<N-1; i=i+2){
        while(q.size()>1){
            q.pop(); // 1. ๋งจ ์•ž์˜ ์›์†Œ pop
            
            int element = q.front(); // 2. ๋‹ค์Œ์œผ๋กœ ์˜ค๋Š” ์•ž์˜ ์›์†Œ๋ฅผ popํ•˜๊ณ , ๋งจ ๋’ค์— push
            q.pop();
            q.push(element);
        }
    }
    cout << q.front();
    return 0;
}
Colored by Color Scripter
๋ฐ˜์‘ํ˜•
Comments