반응형

문제 출처 :


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



알고리즘 분석 :


문제 해결에 필요한 사항

1. 데크(Deque)의 사용 방법


자료구조를 공부하며, Deque에 대한 개념 및 코딩만 해본 상태이고, 직접적인 문제를 접해본 적은 없는 문제인데


이 문제는 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
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <deque>
 
using namespace std;
 
 
int main()
{
    deque<char> dq;
    int tCase;
    int n;
    char val;
 
    cin >> tCase;
    for (int i = 0; i < tCase; i++)
    {
        cin >> n;
 
        for (int k = 0; k < n; k++)
        {
            cin >> val;
 
            // 처음에 들어오는 값을 받는다.
            if (dq.empty())
                dq.push_front(val);
 
            // 가장 왼쪽값보다 현재 입력받은 값이 
            // 아스키 값으로 더 크면
            else if (dq.front() < val)
                dq.push_back(val);
 
            // 가장 오른쪽값보다 현재 입력받은 값이
            // 아스키 값으로 작거나 같으면
            else
                dq.push_front(val);
        }
 
        // 모든 값을 pop하며 출력한다.
        while(!dq.empty())
        {
            cout << dq.front();
            dq.pop_front();
        }
        cout << endl;
    }
}
 
//                                                       This source code Copyright belongs to Crocus
//                                                        If you want to see more? click here >>
Crocus



반응형

'Applied > 알고리즘 문제풀이' 카테고리의 다른 글

[1111번] IQ Test  (2) 2016.11.02
[13419번] 탕수육  (0) 2016.10.31
[9094번] 수학적 호기심  (0) 2016.10.31
[13413번] 오셀로 재배치  (0) 2016.10.31
[11055번] 가장 큰 증가 부분 수열  (0) 2016.10.28