본문 바로가기
알고리즘/자료구조

[백준][Python] 2164번 카드2

by 임짠짠 2022. 2. 4.
반응형
 

2164번: 카드2

N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가

www.acmicpc.net

 

코드

 

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

댓글