λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
CodingTest

[Python]λ°±μ€€ 2346 ::풍선 ν„°λœ¨λ¦¬κΈ° 문제 풀이

by λ„μΊλ¦¬πŸ± 2021. 5. 12.
λ°˜μ‘ν˜•

Idea.

λ°°μ—΄ μ‚¬μš©. (인덱슀 값은 항상 가지고 μžˆμœΌλ‹ˆ λΉ λ₯΄κ²Œ 탐색 κ°€λŠ₯ν•˜λ‹€κ³  생각.)

 

풀이(μ–΄λ–»κ²Œ μ ‘κ·Ό ν•˜κ³  μ–΄λ–€ 것이 μ€‘μš”ν–ˆλ‚˜?)

μž…λ ₯받은 리슀트 외에 인덱슀 λ¦¬μŠ€νŠΈλ„ 항상 같이 κ΄€λ¦¬ν•΄μ„œ 결과에 처음 λŒ€λ‘œ 인덱슀λ₯Ό 담을 수 있게 ν•œλ‹€.

풍선 속 μˆ«μžμ— 따라 λ‹€μŒ 인덱슀 값을 μ •ν•œλ‹€.

풍선 속 μˆ«μžκ°€ 음수이면 μΈλ±μŠ€μ— 풍선 속 숫자λ₯Ό λ”ν•œ ν›„ 리슀트의 길이둜 λ‚˜λˆ„λ©΄ λ‹€μŒ μΈλ±μŠ€κ°€ λ‚˜μ˜¨λ‹€.

풍선 속 μˆ«μžκ°€ μ–‘μˆ˜μ΄λ©΄ μΈλ±μŠ€μ— 풍선 속 μˆ«μžμ—μ„œ 1을 λΊ€ 것을 λ”ν•œ ν›„ 리슀트의 길이둜 λ‚˜λˆ„λ©΄ λ‹€μŒ μΈλ±μŠ€κ°€ λ‚˜μ˜¨λ‹€.

λ‚˜μ˜¨ 인덱슀둜 κ°±μ‹  ν•˜κ³  두 리슀트 λͺ¨λ‘ pop ν•΄μ„œ μ²˜λ¦¬ν•œλ‹€.

리슀트의 길이가 0이 λ λ•ŒκΉŒμ§€ λ°˜λ³΅ν•œλ‹€.

 

 

κ΅¬ν˜„ μ½”λ“œ

N = int(input())

list_N = list(map(int, input().split()))
list_index = []
result = []

for i in range(1,N+1):
    list_index.append(i)
    
idx = 0
k = list_N.pop(idx) # k λŠ” 풍선 속 숫자
result.append(list_index.pop(idx))


while(len(list_N) > 0):
        
    if(k < 0):
        idx = (idx+k) % len(list_N)
    else:
        idx = (idx+(k-1))%len(list_N)
        
    k = list_N.pop(idx)
    result.append(list_index.pop(idx))
        
        
for j in range(N):
    print(result[j], end=" ")

λ°˜μ‘ν˜•

λŒ“κΈ€