✏️ 내가 작성한 코드 - 1
import sys
from collections import deque
N = int(sys.stdin.readline().strip())
lst = [i for i in range(1,N+1)] # 리스트컴프리헨션 사용 후 deque()
lst = deque(lst)
while(len(lst)>1): # 1개 남을때까지 반복
lst.popleft() # 왼쪽에서 뺌
lst.append(lst.popleft()) # 왼쪽에서 뺀거 오른쪽에 더함
print(lst.pop())
✏️ 내가 작성한 코드 - 2
import sys
from collections import deque
N = int(sys.stdin.readline().strip()) # 입력
lst = deque(range(1,N+1)) # deque안에서 range사용
while(len(lst)>1):# 1개 남을때까지 반복
lst.popleft() # 맨 왼쪽값 꺼내기
lst.rotate(-1) # 맨 앞에값 맨 뒤로
print(lst.pop())
✏️ 내가 작성한 코드 - 3 (rotate() 사용)
import sys
from collections import deque
N = int(sys.stdin.readline().strip()) # 입력
lst = deque()
for i in range(1, N+1):
lst.append(i) # deque에 값 차례대로 append
while(len(lst)>1):# 1개 남을때까지 반복
lst.popleft() # 맨 왼쪽값 꺼내기
lst.rotate(-1) # 맨 앞에값 맨 뒤로, rotate() 사용
print(lst.pop())
✏️ 참고
* deque() 에서 괄호안에 range사용이 가능하다는 것을 처음 알았다.
* rotate() - deque의 목록회전이 가능한 rotate를 활용하면 훨씬 간편하게 앞의 값을 뒤로 보낼 수 있다.
맨앞의 값을 맨뒤로 보낼땐 rotate(-1) : 왼쪽이동 , 맨뒤 값을 맨앞으로 보낼땐 rotate(1) : 오른쪽이동 사용하기.
'백준' 카테고리의 다른 글
[백준][python] 1924 2007년 문제 (0) | 2023.10.09 |
---|---|
[백준][python] 2869 달팽이는 올라가고 싶다 문제 (0) | 2023.10.09 |
[백준][python] 1181 단어 정렬 문제 (0) | 2023.08.01 |
[백준][python] 10817 세 수 문제 (0) | 2023.07.25 |
[백준][python] 1026 보물 문제 (0) | 2023.07.19 |