https://www.acmicpc.net/problem/18258
[오답] → 시간초과
다른 문제에서 collections 패키지의 deque 모듈을 사용했을 때 시간이 단축된다는 것을 발견하고 이 문제를 다시 풀어보았다.
[정답]
먼저 queue에 대한 함수들을 정의한다.
1. 'push X: 정수 X를 큐에 넣는 연산이다.' → push(X): append() 함수를 사용하여 큐 q_queue에 인자값 X를 push한다.
2. 'pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.' → pop(): len(q_queue)==0이라면 -1을, len(q_queue)==0이 아니라면 popleft() 함수를 사용하여 q_queue에 가장 앞에 있는 정수를 pop한다.
3. 'size: 큐에 들어있는 정수의 개수를 출력한다.' → size(): len() 함수를 사용하여 q_queue의 길이를 출력한다.
4. 'empty: 큐가 비어있으면 1, 아니면 0을 출력한다.' → empty(): len(q_queue)==0이라면 -1을, len(q_queue)==0이 아니라면 0을 출력한다.
5. 'front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.' → front(): len(q_queue)==0이라면 -1을, len(q_queue)==0이 아니라면 큐의 가장 앞에 있는 정수 즉 q_queue[0]을 출력한다.
5. 'back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.' → back(): len(q_queue)==0이라면 -1을, len(q_queue)==0이 아니라면 큐의 가장 뒤에 있는 정수 즉 q_queue[-1]을 출력한다.
6. 명령어 수를 N에 입력받는다. 큐의 역할을 할 큐 q_queue를 정의한다.
7. for문을 돌면서 명령어를 comm에 입력받는다. comm을 split()으로 받아 comm=push 1일 경우, comm[0]=push, comm[1]=1로 되도록 한다. comm[0]이 각각 'push', 'pop', 'size', 'empty', 'front', 'back' 경우를 나누어 위에서 정의한 알맞은 함수에 적용한다.
'알고리즘 공부 > 백준 > Python3' 카테고리의 다른 글
[백준 파이썬] #10102: 개표 (0) | 2021.01.29 |
---|---|
[백준 파이썬] #5635: 생일 (0) | 2021.01.29 |
[백준 파이썬] #2164: 카드2 (0) | 2021.01.27 |
[백준 파이썬] #10817: 세 수 (0) | 2021.01.26 |
[백준 파이썬] #2935: 소음 (0) | 2021.01.26 |