[백준] 11866 요세푸스 문제 0과 Python deque

2021. 12. 28. 14:51·Algorithm/백준

#백준 11866

 

1. 처음에 문제를 읽고 원형linked list를 떠올렸다.

2. 아직 linked list는 익숙하지가 않아서 구글링을 하던중 deque를 사용하는 사람들이 대다수였다.

from collections import deque

n, k = map(int,input().split())
deq = deque([])
for i in range(1, n + 1):
    deq.append(i)
print('<', end='')

while len(deq) >0:
    deq.rotate(-k)
    if len(deq) == 1:
        print('{}>'.format(deq.pop()))
    else:
        print('{},'.format(deq.pop()), end=' ')

- 이건 내가 작성한 코드( deque의 rotate사용, 92ms)

- append로 사용하면 이중 반복문이 되면서 시간이 늘어났다!

- 틀렸습니다는 print( end = ' ')에서 공백없이 따옴표 쓰는 바람에...ㅠ^ㅠ

 

3. deque란?

 - 양방향 queue로 맨 앞, 뒤 element의 pop, append에 최적화 되어있다.

 -  deque는 구현에따라 stack으로도 queue로도 사용할 수 있어서, push/pop 연산이 많은 문제에서 유용하다

 

4. deque의 method

  • deque.append(item): item을 데크의 오른쪽 끝에 삽입한다.
  • deque.appendleft(item): item을 데크의 왼쪽 끝에 삽입한다.
  • deque.pop(): 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
  • deque.popleft(): 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
  • deque.extend(array): 주어진 배열(array)을 순환하면서 데크의 오른쪽에 추가한다.
  • deque.extendleft(array): 주어진 배열(array)을 순환하면서 데크의 왼쪽에 추가한다.
  • deque.remove(item): item을 데크에서 찾아 삭제한다.
  • deque.rotate(num): 데크를 num만큼 회전한다(양수면 오른쪽, 음수면 왼쪽).

출처 : https://leonkong.cc/posts/python-deque.html

 

5. deque 구현

from collections import deque

deq = deque([1,2,3,4,5])

deq.append(6)
# deq = deque([1, 2, 3, 4, 5, 6])

deq.appendleft(0)
# deq = deque([0, 1, 2, 3, 4, 5, 6])

deq.pop()
# 실행결과 6

deq.popleft()
# 실행결과 0

 

 

deq = deque([1,2,3,4])
arr = [5,6]

deq.extend(arr)
# deq = deque([1, 2, 3, 4, 5, 6])

deq.extendleft(arr)
# deq = deque([6, 5, 1, 2, 3, 4])

deq.remove(6)
# deq = deque([5, 1, 2, 3, 4])

deq.rotate(-2)
# deq = deque([2, 3, 4, 5, 1])
# 앞의 숫자가 맨 뒤로 이동X2 or 왼쪽으로 두번 이동

deq.rotate(1)
# deq = deque([1, 2, 3, 4, 5])
# 뒤의 숫자가 맨 앞으로 이동 or 오른쪽으로 한번 이동

※ deq.extend와 deq.extendleft는 따로 실행했다고 생각해주세요^~^

반응형
'Algorithm/백준' 카테고리의 다른 글
  • [백준] 10816 숫자 카드 2와 Python 빈도수 계산
  • [백준] 2798블랙잭과 Python itertools의 순열&조합
  • [백준] 2108 통계학 Python Counter모듈
  • [사소한 궁금증3] python math.comb와 factorial 함수
수영하는 두루미
수영하는 두루미
한국체육대학교에서 스포츠 AI빅데이터를 공부하고 있습니다. B.S. Computer Science
  • 수영하는 두루미
    두루미의 스포츠 데이터분석실
    수영하는 두루미
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • 스포츠 AI·빅데이터(2024~) (21)
        • 2024-2 (0)
        • 빅데이터기반 스포츠경기분석 (10)
        • 스포츠와 소셜텍스트분석 (4)
        • 영상기반 데이터 수집기법 (3)
        • 2025-1 (0)
        • 스포츠와 AI 모델링 기초 (0)
        • 스포츠와 프로그램 코딩(Python) (0)
        • 운동역학 (0)
        • 2025-2 (0)
        • 스포츠 AI빅데이터 연구 세미나 (1)
        • 스포츠 딥러닝 (0)
        • 운동생리학 (0)
        • etc. (0)
      • Data (13)
        • ADsP (1)
        • SQLD (1)
        • 빅데이터분석기사 (4)
        • ADP(데이터분석 전문가) (5)
        • 키다리아저씨(2021.12.05~) (2)
        • 파이썬 자격과정(2021.07.22-23) (0)
      • 정보처리기사 (1)
      • CSTS (10)
      • 블록체인과 암호화폐 (0)
        • 블록체인 (0)
      • Algorithm (44)
        • 백준 (42)
        • 자료구조 (2)
      • CSOS (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    csts
    알고리즘
    경험기반테스트
    백준
    명세기반테스트
    스포츠데이터분석
    heapsort
    구조기반테스트
    스포츠ai빅데이터
    정적테스트
    데이터분석
    한체대
    C언어
    스포츠데이터
    한체대대학원
    자료구조
    Python
    빅데이터분석기사
    동적테스트
    스포츠빅데이터
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
수영하는 두루미
[백준] 11866 요세푸스 문제 0과 Python deque
상단으로

티스토리툴바