https://www.acmicpc.net/problem/10845
<문제 해설>
First in First out하는 자료구조인 queue를 만들면 된다. 이때 앞에값 제거하면 시간이 많이 걸리니 index를 활용해 값을 제거하지않고 공간을 이동해서 값을 제거하는 효과를 만들겠다.
<예시>
입력 : push 1 push 2 front back size empty pop pop pop size empty pop push 3 empty front
출력값 : 1 2 2 0 1 2 -1 0 1 -1 0 3
<코드>
import sys
N = int(sys.stdin.readline())
queue =[]
front = 0
end = -1
for i in range(N):
command = sys.stdin.readline().split()
if command[0] == 'push':
end +=1
queue.append(int(command[1]))
elif command[0] == 'pop':
if front > end:
print(-1)
else:
print(queue[front])
front +=1
elif command[0] == 'size':
print(end-front+1)
elif command[0] == 'empty':
if front > end:
print(1)
else:
print(0)
elif command[0] == 'front':
if front > end:
print(-1)
else:
print(queue[front])
elif command[0] == 'back':
if front > end:
print(-1)
else:
print(queue[end])
<코드 설명>
import sys //sys라이브러리 불러오기
N = int(sys.stdin.readline()) //N값 받아오기
queue =[] //큐역할할 배열 생성
front = 0 //큐의 맨앞의 인덱스
end = -1 //큐의 맨뒤의 인덱스
for i in range(N): //N만큼 반
command = sys.stdin.readline().split() //command를 받아오는 함수
if command[0] == 'push': //명령어가 push라면
end +=1 //끝값을 올려주고
queue.append(int(command[1])) //큐에 값을 추가한다
elif command[0] == 'pop': //명령어가 pop이라면
if front > end: //큐가 비었다면
print(-1) //-1출력
else: //아니라면
print(queue[front]) //정상적으로 앞에값 출력하고
front +=1 //앞 인덱스 증가해 앞의숫자 제거한 효과 만들기
elif command[0] == 'size': //명령어가 size라면
print(end-front+1) //큐의 길이 계산해서 출력하기
elif command[0] == 'empty': //명령어가 비었는지 물어본다면
if front > end: //비지 않았을경우 1
print(1)
else: //비었을경우 0 출력
print(0)
elif command[0] == 'front': //명령어가 앞이라면
if front > end: //큐가 비었으면 -1출력
print(-1)
else:
print(queue[front]) //아니면 앞의 값 출력
elif command[0] == 'back':
if front > end: //위와 같음
print(-1)
else:
print(queue[end]) //뒤의 갚을 출
'Coding Test > Python' 카테고리의 다른 글
[Python/백준] 10866 덱 (0) | 2023.01.12 |
---|---|
[Python/백준] 1978 소수 찾기 (1) | 2023.01.12 |
[Python/백준] 10828 스택 (0) | 2023.01.11 |
[Python/백준] 2869 달팽이는 올라가고 싶다 (1) | 2023.01.11 |
[Python/백준] 5430 AC (0) | 2023.01.11 |
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간