<알고리즘 문제풀이&연습>/[C++] 백준, 프로그래머스 등등

[백준 14612] 김식당 (IUPC)

BlockDMask 2017. 7. 18. 12:17
반응형

안녕하세요 

BlockDMask입니다.

백준 알고리즘 사이트를 알게되어서,

문제를 풀고 게시하려 합니다.

잘부탁드립니다.

0) 제목

- 2017 인하대학교 프로그래밍 경진대회(IUPC) A번 김식당 입니다.

- C++을 이용하여 풀었습니다.


1) 문제설명


- 초기 값으로 N(입력될 쿼리의 갯수), M(테이블의 수)가 들어옵니다.

- 쿼리의 종류로는 

order [int][int] 

sort 

complete [int] 가 있습니다.


2) 풀이과정

- order와 sort만 보고, 배열로 풀려고 했으나, 중간 값을 삭제하는 complete 가 주어져서, 

배열은 삭제 후 재 배열을 해주어야 하기 때문에 complete에 맞지 않는다고 판단하였습니다.

- 그래서 중간값을 삭제해 줄 수 있고, 자동으로 동적할당을 해주는 STL vector container를 이용하여 풀었습니다.

pair를 이용하여서 테이블의 수(int)와 주문 시간(int)을 받았습니다.


3) 함수설명

함수가 따로 없어서 주석 달아놓았습니다.


4) 코드

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
50
51
52
53
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main(void){
    int N=0//number of queries
    int M=0//number of tables
    int tableNum, orderTime;
    string str;
    cin>>N;
    cin>>M;
        
    //pair<int, int> 타입으로 vector v 선언.
    vector<pair<intint> > v;
    for(int i=0; i<N; i++){
        cin>>str;
            
        if(str == "order"){
            cin >> tableNum;
            cin >> orderTime;
        //vector 에 pair<int, int> 타입으로 orderTime 과 tableNum 삽입.
        v.push_back(pair<intint>(orderTime, tableNum));
                
        }else if(str == "complete"){
            cin >> tableNum;
            //iterator 를 사용하여 vector의 시작부터 끝까지 반복하면서, tableNum을 찾으면 erase.
            for(vector<pair<intint> >::iterator iter=v.begin() ; iter!=v.end() ; iter++){
                if(tableNum == iter->second){
                    v.erase(iter);
                    break;
                }    
            }
        
        }else{
            sort(v.begin(), v.end());
        }
    
        if(v.size() == 0){
            cout << "sleep" << endl;
            continue;
        }
    
        for(vector<pair<intint> >::iterator iter=v.begin() ; iter!=v.end() ; iter++){
            cout << iter->second << " " ;
        }
        
        cout << endl;
    }
    
    return 0;
}
 
cs


5) 문제 풀이 인증

경로 : University 인하대학교 2017 인하대학교 프로그래밍 경진대회(IUPC) A번

출처 : https://www.acmicpc.net/problem/14612

STL 을 이제 배우기 시작해서 많이 버벅대면서 하고있습니다.

백준 아이디는 공개하지 않고 캡쳐 했습니다.

반응형