[Python] 백준 #1021- 회전하는 큐

2022. 1. 23. 17:24·코딩테스트/백준[Python]

문제


 

1021번: 회전하는 큐

첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가

www.acmicpc.net

코드


My answer

import sys
from collections import deque
input=sys.stdin.readline

n,m=map(int,input().split())
a=deque([i+1 for i in range(n)])
b=list(map(int,input().split()))
cnt=0
while(len(b)!=0):
    if(a[0]==b[0]):
        a.popleft()
        b.pop(0)
    else:
        ind=a.index(b[0])
        if(ind>len(a)/2):
            tmp=a.pop()
            a.appendleft(tmp)
        else:
            tmp=a.popleft()
            a.append(tmp)
        cnt+=1
print(cnt)

Another answer

from collections import deque 
n,m = list(map(int,input().split())) 
value = list(map(int,input().split())) 
q = deque([i+1 for i in range(n)]) 
count = 0 
for x in value: 
	while True: 
    	if q.index(x) == 0: 
        	q.popleft() #1번
            break 
        if q.index(x) - 0 <= len(q) - q.index(x): # 2번 
        	q.append(q.popleft()) 
            count += 1 
        else: 
        	q.appendleft(q.pop()) # 3번 
            count += 1 
 print(count)

풀이


우선 deque를 사용해서 양방향에서 쉽게 빼고 붙이게 함수를 사용했고, 큐의 첫번째 원소가 우리가 원하던 숫자면 1번방법을 쓰면되므로 pop을 해주고, 원하던 숫자가 아니면 원하는 숫자까지의 거리가 왼쪽으로 가는게 빠른지 오른쪽으로 가는게 빠른지를 찾아준다. 찾아주면 큐를 조작하여 원하는 숫자가 첫번째 원소로 오게 만들어주면된다. deque함수를 쓰는게 제일 좋아보인다. 

728x90

'코딩테스트 > 백준[Python]' 카테고리의 다른 글

[Python] 백준 #11729 - 최대 힙  (0) 2022.02.28
[Python] 백준 #5397- 키로거  (0) 2022.01.25
[Python] 백준 #1966- 프린터 큐  (0) 2022.01.23
[Python] 백준 #2776- 암기왕  (0) 2022.01.23
[Python] 백준 #10546- 배부른 마라토너  (0) 2022.01.23
'코딩테스트/백준[Python]' 카테고리의 다른 글
  • [Python] 백준 #11729 - 최대 힙
  • [Python] 백준 #5397- 키로거
  • [Python] 백준 #1966- 프린터 큐
  • [Python] 백준 #2776- 암기왕
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (481)
      • 알쓸신잡 (88)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Blog

    • 🏠 Home

    ✏️글쓰기
    💻 관리

    Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    이분탐색
    나동빈
    파이썬
    이코테
    이것이취업을위한코딩테스트다
    DFS
    그리디
    BFS
    백준
    dp
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
상단으로

티스토리툴바