반응형
코드
from collections import deque
n = int(input())
d = deque([i for i in range(1,n+1)])
while len(d) != 1:
d.popleft()
d.append(d.popleft())
print(d.pop())
설명
deque를 사용하여 해결한 풀이 방법이다. 덱은 양 끝단에서 모두 push와 pop이 가능하기 때문에 속도가 빠르고 시간 초과 문제를 해결할 수 있다.
덱에 1부터 n까지의 숫자를 넣은 후 처음 값은 pop을 해주고 두번째 값은 pop을 해준 후 맨 뒤에 push를 해주었다. 마지막에 하나의 값만 남아있을 때 그 값을 출력하게 했다.
- deque 메소드
Description | |
D[j] | 인덱스 i번째 요소 반환 |
D[j] = val | 인덱스 i번째 요소 수정 |
D.clear() | 모든 요소를 삭제 |
D.rotate(k) | 오른쪽으로 k번 원형으로 이동(Circular shift) |
D.remove(e) | 첫번째 매칭되는 e를 삭제 |
D.count(e) |
e에 매칭되는 개수 반환 |
len(D) | 요소 개수 |
D.appendleft() | front에 추가 |
D.append() | back에 추가 |
D.popleft() | front에서 삭제 |
D.pop() | back에서 삭제 |
D[0] | 첫 번째 요소 반환 |
D[-1] | 마지막 요소 반환 |
반응형
'알고리즘 > 자료구조' 카테고리의 다른 글
[백준][Python] 1874번 스택 수열 (0) | 2022.02.07 |
---|---|
[백준][Python] 10866번 덱 (0) | 2022.02.04 |
[백준][Python] 9012번 괄호 (0) | 2022.02.03 |
[백준][Python] 18258번 큐 2 (0) | 2022.02.03 |
[백준][Python] 10828번 스택 (0) | 2022.02.03 |
댓글