CodingTest

[Python]λ°±μ€€ 2162::μΉ΄λ“œ2

λ„μΊλ¦¬πŸ± 2021. 5. 4. 13:22
λ°˜μ‘ν˜•

 

Solution

πŸ‘‰ 1 λΆ€ν„° 순차적으둜 μΉ΄λ“œ 덱에 λ„£κ³ , μ•žμ— μžˆλŠ” 것듀을 항상 pop ν•΄μ€˜μ•Ό ν•˜λ―€λ‘œ deque 라이브러리λ₯Ό μ‚¬μš©ν•œλ‹€. 

πŸ‘‰νμ— 값이 ν•˜λ‚˜ λ‚¨μ•„μžˆλ‹€λ©΄ κ·Έ 값을 좜λ ₯ν•˜λŠ” 게 닡이닀.

πŸ‘‰νμ— 값이 ν•˜λ‚˜ 이상일 λ•ŒλŠ”, λ§¨μ•žμ— μžˆλŠ” 숫자λ₯Ό pop ν•΄μ„œκΊΌλ‚΄κ³ , λ˜ν•œ 번 pop ν•œ 값은 append ν•΄μ€€λ‹€ .

 

Tip

πŸ‘‰from collections import deque

πŸ‘‰dq = deque()  μ΄λ ‡κ²Œ 큐λ₯Ό λ§Œλ“ λ‹€.

πŸ‘‰dq.popleft() (개인적으둜 처음 ν’€λ•Œ λ ˆν”„νŠΈ 팝 이라고 μ¨μ„œ ν‹€λ Έμ—ˆλŠ”λ°, μ›λž˜ κΈ°λ³Έ 팝이 μžˆμœΌλ‹ˆ 팝이 항상 λ¨Όμ €μ˜¨λ‹€κ³  μΈμ§€ν•˜λ©΄ μ™Έμš°κΈ° 쒋을 것 κ°™λ‹€.)

πŸ‘‰append둜 값을 λ„£μ–΄μ€€λ‹€.

 

# 2162 μΉ΄λ“œ 2

from collections import deque

N = int(input()) # 1<= <=500000
dq = deque()

for i in range(N):
    dq.append(i+1)
       
while(len(dq) != 1):
    
    dq.popleft()
    
    if(len(dq)==1):
        break
    else:
        k = dq.popleft()
        dq.append(k)
    
print(dq.popleft())
λ°˜μ‘ν˜•