๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ’ป๐Ÿ’ญ๐ŸŽง๐ŸŒ

BOJ 11866: ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ 0 (Python) ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€ ํ’€์ด

BOJ 11866: ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ 0 (Python)

adorableco 2023. 9. 19. 15:54
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

https://www.acmicpc.net/problem/11866

 

11866๋ฒˆ: ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ 0

์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

 

 

์ฝ”๋“œ

N,K = map(int,input().split())

que = [0] *(N+1)
rear = 0
front = 0
no = 0
temp = 0 

def deque()-> int:
    global front
    global no
    x = que[front]
    front += 1
    no -= 1
    if front == N:
        front = 0
    return x

def enque(y):
    global rear
    global no
    que[rear] = y
    rear += 1
    no += 1
    if rear == N:
        rear = 0

for i in range(N):
    enque(i+1)

print('<', end='')

while no > 1:
    temp = (K-1)%no
    for i in range(temp):
        array[i] = deque()
    for i in range(temp):
        enque(array[i])
    print(f'{deque()}, ',end='')  
print(f'{deque()}> ')

 

ํ’€์ด

 

 

que : 1 ๋ถ€ํ„ฐ N ๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ๋‹ด์„ ํ ๋ฐฐ์—ด

rear : ํ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ ์ธ๋ฑ์Šค์˜ ๋‹ค์Œ ์ธ๋ฑ์Šค

front : ํ ๋ฐฐ์—ด์˜ ์ฒซ ์›์†Œ ์ธ๋ฑ์Šค

no : ํ ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์›์†Œ ๊ฐœ์ˆ˜

 

ํ ๋ฐฐ์—ด์˜ front ๋ถ€ํ„ฐ (K-1)%no ๋งŒํผ deque ํ•˜๊ณ  ๋‹ค์‹œ enque ๋ฅผ ํ•˜๋ฉด ํ ๋ฐฐ์—ด์˜ front ์—๋Š” ์ด๋ฒˆ ์ฐจ๋ก€์— ๋น ์ ธ์•ผํ•  ์›์†Œ๊ฐ€ ์˜จ๋‹ค.

์ด ์ƒํƒœ์—์„œ deque ๋กœ ๊ฐ’์„ ๋ฐ›์•„์„œ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค. 

 

๋ฐ˜์‘ํ˜•