No Limitation
[코딩테스트] - 큐 문제풀이 본문
https://www.acmicpc.net/problem/18258
import sys
N = int(sys.stdin.readline())
from collections import deque
queue = deque([])
for _ in range(N) :
command = sys.stdin.readline().split()
if command[0] == 'push' :
queue.append(command[1])
elif command[0] == 'pop':
if queue :
print(queue.popleft())
else :
print(-1)
elif command[0] == 'size' :
print(len(queue))
elif command[0] == 'empty' :
if queue :
print(0)
else :
print(1)
elif command[0] == 'front' :
if queue:
print(queue[0])
else :
print(-1)
elif command[0] == 'back' :
if queue :
print(queue[-1])
else :
print(-1)
https://www.acmicpc.net/problem/2346
'''
import sys
N = int(sys.stdin.readline())
num_written = [int(x) for x in sys.stdin.readline().split()]
num_set = list(enumerate(num_written))
idx = 0
for _ in range(N) :
curr = num_set[idx]
pre_idx = idx
print(curr[0]+1, end=' ')
del num_set[idx]
idx = idx+curr[1]
if idx >= len(num_set) :
idx = idx-len(num_set)-1
elif idx < 0 :
idx = idx+len(num_set)
if pre_idx < idx :
idx = idx-1
'''
### 위와 같이 그때 그때 주어진 테스트케이스에 맞게 짜려고 해도 안되는 경우 존재
### 어떻게 deque로 문제를 풀어내는지 살펴보자, 정확히는 deque의 rotate 기능을 알자
import sys
from collections import deque
N = int(sys.stdin.readline())
num_written = [int(x) for x in sys.stdin.readline().split()]
num_set = list(enumerate(num_written))
num_set = deque(num_set)
for _ in range(N) :
curr = num_set.popleft()
print(curr[0]+1,end=' ')
#### 음수 방향이냐 양수 방향이냐에 따라, -1을 해줘야하는 거 주의하자
#### 또한 rotate(N) 이 수가 오른쪽으로 돌기 위해서는 음수, 왼쪽으로 돌기 위해서는 양수여야 함을 기억
### ex)
### num_list = deque([1,2,3,4,5])
### num_list.rotate(1) # deque([5,1,2,3,4]) # 우리 기준 시계 반대 방향
### num_list.rotate(-1) # deque([2,3,4,5,1]) # 우리 기준 시계 방향
if curr[1] > 0 :
num_set.rotate(-(curr[1]-1))
else :
num_set.rotate(-curr[1])
'프로그래밍' 카테고리의 다른 글
[코딩테스트] BFS 대표 유형 공부 - 게임 맵 최단 거리 및 기타 문제들 (0) | 2024.03.06 |
---|---|
[프로그래밍] 프로그래머스 - 디스크 컨트롤러 [Heap] (1) | 2024.03.06 |
[코딩테스트 준비] - 문자열 / 스택 문제 풀이 (2) | 2024.02.28 |
[Ubuntu] nvidia-smi, 그래픽 드라이버 연결 문제 해결 (0) | 2022.09.15 |
[Ubuntu] SSH Server 접속 오류 해결 (0) | 2022.09.06 |