문제
https://www.acmicpc.net/problem/10845
주요 아이디어
이전 포스팅과 마찬가지로 단순하게 큐를 구현하는 문제이다.
코드 구현 (Python 3)
더보기
# 큐!!!!!!!!!!
'''
아까 풀었던 스택 문제랑 비슷하게 풀면 될것같다
반복 입력 작성 시 sys.stdin.readline() 사용 잊지 말 것!
'''
import sys
input=sys.stdin.readline
global f, r
queue = []
# push
def push(X):
queue.append(X)
return
# pop
def pop():
if r-f == 0:
print(-1)
else:
print(queue[f+1])
# 그냥 del 하면 위치 밀리니까 0으로 대체하자
queue[f+1] = 0
return
# size
def size():
print(r-f)
return
# empty
def empty():
if r-f == 0:
print(1)
else:
print(0)
return
# front
def front():
print(queue[f+1])
return
# back
def back():
print(queue[r])
return
N = int(input()) # 커맨드 개수
f = -1
r = -1
for i in range(N):
cmd = input().split()
if cmd[0] == 'push':
push(int(cmd[1]))
r += 1
elif cmd[0] == 'pop':
pop()
if r-f > 0:
f += 1
elif cmd[0] == 'size':
size()
elif cmd[0] == 'empty':
empty()
elif cmd[0] == 'front':
front()
elif cmd[0] == 'back':
back()
else:
print('error occured')
break
#print('f : ', f, 'r : ', r)
실패 원인
front랑 back 예외처리 안해서 런타임에러(IndexError)가 발생했다.
(사실 back보다는 rear라고 쓰는데.. 왜 back이라고 써놨을까)
코드 재구현 (Python 3)
더보기
import sys
input=sys.stdin.readline
global f, r
queue = []
# push
def push(X):
queue.append(X)
return
# pop
def pop():
if r-f == 0:
print(-1)
else:
print(queue[f+1])
# 그냥 del 하면 위치 밀리니까 0으로 대체하자
queue[f+1] = 0
return
# size
def size():
print(r-f)
return
# empty
def empty():
if r-f == 0:
print(1)
else:
print(0)
return
# front랑 back 예외처리 안했다!!
# front
def front():
if r-f == 0:
print(-1)
else:
print(queue[f+1])
return
# back
def back():
if r-f == 0:
print(-1)
else:
print(queue[r])
return
N = int(input()) # 커맨드 개수
f = -1
r = -1
for i in range(N):
cmd = input().split()
if cmd[0] == 'push':
push(int(cmd[1]))
r += 1
elif cmd[0] == 'pop':
pop()
if r-f > 0:
f += 1
elif cmd[0] == 'size':
size()
elif cmd[0] == 'empty':
empty()
elif cmd[0] == 'front':
front()
elif cmd[0] == 'back':
back()
else:
print('error occured')
break
#print('f : ', f, 'r : ', r)
제출 결과
코드 개선 방안
- 스택과 마찬가지로 자료구조 구현은 개념에 충실해야한다는걸 다시 한 번 깨닫는다
- https://ll2ll.tistory.com/10?category=956602
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 1260. DFS와 BFS (0) | 2024.04.01 |
---|---|
[BOJ] 10866. 덱 (0) | 2022.09.07 |
[BOJ] 10828. 스택 (0) | 2022.09.07 |
[BOJ] 10816. 숫자카드 2 (0) | 2022.09.07 |
[BOJ] 10814. 나이순 정렬 (0) | 2022.09.07 |