Queue_요세푸스 문제(1158)

Eugenius1st·2022년 10월 7일
0

Algorithm_Baekjoon

목록 보기
141/158
post-thumbnail

Queue_요세푸스 문제(1158)

문제

코드 - 덱 풀이

# BOJ__1158__덱
from collections import deque
N,K = map(int,input().split())
arr= deque(list(range(1,N+1)))
cnt = 0
res = []
while arr:
    tmp = arr.popleft()
    cnt+=1
    if cnt == K:
        cnt = 0
        res.append(tmp)
    else:
        arr.append(tmp)
print("<"+", ".join(map(str,res))+">")

코드 - 원형큐 풀이

# BOJ__1158__원형큐
N,K = map(int,input().split())
arr = list(range(N+1))
res = []
size = N+1
front = 0
rear = size-1
tmp = 0
cnt = 0
def enqueue(x):
    global rear
    if (rear+1)%size != front:#is not full
        rear = (rear+1)%size
        arr[rear] = x

def dequeue():
    global front
    if front == rear: #is empty
        print("<"+", ".join(map(str,res))+", "+tmp+">")
        sys.exit()
    else:
        front = (front+1)%size
        save = arr[front]
        arr[front]=None
        return save

while front!=rear:
    cnt += 1
    tmp = dequeue()
    if cnt == K:
        cnt = 0
        res.append(tmp)
    else:
        enqueue(tmp)

print("<"+", ".join(map(str,res))+">")
profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글