백준
[백준] 10866번 : 덱 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 8. 10. 16:25
728x90
반응형
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
1. 문제 설명
2. 풀이과정
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- deque 자료구조를 구현해 보는 문제이기에 리스트 대신 deque 자료구조를 사용해 봤다. deque 자료구조를 사용하기 위해 deque 모듈을 불러온다. from collections import deque
- 명령의 수를 입력받는다. N = int(sys.stdin.readline())
- 명령의 결과를 저장할 deque을 생성한다. Deque = deque()
- 명령어 수만큼 반복하며 for _ in range(N)
- 명령어를 리스트로 입력받는다. word = list(sys.stdin.readline().split())
- 만약 명령어의 명령이 push_front 이면 if (word[0] == 'push_front')
- deque의 제일 앞에 값을 추가한다. Deque.appendleft(int(word[1]))
- 만약 명령어의 명령이 push_back 이면 elif (word[0] == 'push_back')
- deque의 제일 뒤에 값을 추가한다. Deque.append(int(word[1]))
- 만약 명령어의 명령이 pop_front 이면 elif (word[0] == 'pop_front')
- deque이 공백일 경우 -1을 출력하고 if (len(Deque) == 0): print(-1)
- 공백이 아닐 경우 제일 앞의 값을 출력 및 삭제한다. else: print(Deque.popleft())
- 만약 명령어의 명령이 pop_back 이면 elif (word[0] == 'pop_back')
- deque이 공백일 경우 -1을 출력하고 if (len(Deque) == 0): print(-1)
- 공백이 아닐 경우 제일 뒤의 값을 출력 및 삭제한다. else: print(Deque.pop())
- 만약 명령어의 명령이 size 이면 deque의 크기를 출력한다. elif (word[0] == 'size'): print(len(Deque))
- 만약 명령어의 명령이 empty 이면 elif (word[0] == 'empty')
- deque이 공백일 경우 1을 출력하고 if (len(Deque) == 0): print(1)
- 공백이 아닐 경우 0을 출력한다. else: print(0)
- 만약 명령어의 명령이 front 이면 elif (word[0] == 'front')
- deque이 공백일 경우 -1을 출력하고 if (len(Deque) == 0): print(-1)
- 공백이 아닐 경우 deque의 제일 앞의 값을 출력한다. else: print(Deque[0])
- 그 외의 명령(back)이면 else
- deque이 공백일 경우 -1을 출력하고 if (len(Deque) == 0): print(-1)
- 공백이 아닐 경우 deque의 제일 뒤의 값을 출력한다. else: print(Deque[-1])
반응형
3. 소스코드
import sys
from collections import deque
N = int(sys.stdin.readline())
Deque = deque()
for _ in range(N):
word = list(sys.stdin.readline().split())
if (word[0] == 'push_front'):
Deque.appendleft(int(word[1]))
elif (word[0] == 'push_back'):
Deque.append(int(word[1]))
elif (word[0] == 'pop_front'):
if (len(Deque) == 0):
print(-1)
else:
print(Deque.popleft())
elif (word[0] == 'pop_back'):
if (len(Deque) == 0):
print(-1)
else:
print(Deque.pop())
elif (word[0] == 'size'):
print(len(Deque))
elif (word[0] == 'empty'):
if (len(Deque) == 0):
print(1)
else:
print(0)
elif (word[0] == 'front'):
if (len(Deque) == 0):
print(-1)
else:
print(Deque[0])
else:
if (len(Deque) == 0):
print(-1)
else:
print(Deque[-1])
728x90
반응형