일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- MySQL
- react
- SQL
- javascript
- 모각코
- 백준 16918번
- 다이나믹프로그래밍
- 백준 3085번
- 머신러닝과 딥러닝
- 알고리즘
- Python
- java_programming
- 백준
- 그리디
- 백준 1331번
- HUFS 모각코 캠프
- AWS
- 백준 2512번
- 백준 17451번
- 백준 1253번
- 백준 15787번
- 명품자바
- SWEA 15612번
- ubuntu
- 다이나믹 프로그래밍
- 자바
- 그래프
- 깃헙
- 백준 18310번
- 백준 1987
Archives
- Today
- Total
차곡차곡
[BOJ/Python] 백준 1021번 - 회전하는 큐 본문
백준 #1021 회전하는 큐
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가
www.acmicpc.net
from collections import deque
import sys
input = sys.stdin.readline
n, m = map(int, input().split()) # n: 큐의 크기, m: 뽑아내려는 원소 개수
spot = deque(list(map(int, input().split()))) # 뽑아내려는 원소 위치
inx = deque(list(range(n))) # 기존 인덱스
cnt = 0
for i in range(m):
while True:
if inx.index(spot[i] - 1) <= len(inx)//2:
if inx[0] == spot[i] - 1:
inx.popleft()
break
else:
inx.append(inx.popleft())
cnt += 1
else:
if inx[0] == spot[i] - 1:
inx.popleft()
break
else:
inx.appendleft(inx.pop())
cnt += 1
print(cnt)
- 뽑아내려는 원소의 위치가 남아있는 원소 개수의 반 이하일 경우 원소를 찾을 때까지 맨 앞 원소를 맨 뒤로 보낸다.
- 뽑아내려는 원소의 위치가 남아있는 원소 개수의 반보다 클 경우 원소를 찾을 때까지 맨 뒤 원소를 맨 앞으로 보낸다.
'CS > Algorithm' 카테고리의 다른 글
[BOJ/Python] 백준 17827번 - 달팽이 리스트 (0) | 2022.05.19 |
---|---|
[BOJ/Python] 백준 11866번 - 요세푸스 문제0 (0) | 2022.05.18 |
[BOJ/Python] 백준 2003번 - 수들의 합2 (0) | 2022.05.15 |
[BOJ/Python] 백준 1748번 - 수 이어 쓰기 1 (0) | 2022.05.13 |
[BOJ/Python] 백준 2531번 - 회전 초밥 (0) | 2022.05.12 |
Comments