Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- spring boot
- 1781
- Crossfit
- 해시해킹
- 재귀함수
- C++
- 26008
- Flutter
- 재귀
- DP
- 15662
- sw expert academy
- 동적프로그래밍
- 서울에서경산까지
- 1로만들기2
- 크로스핏
- 회전하는큐
- 백준
- dart
- 14863
- 15353
- BOJ
- Python
- D1
- 스택
- 4811
- 삼성
- 브루트포스
- BOJ14889
- 그리디
Archives
- Today
- Total
곧죽어도 콛잉
[BOJ 1021 / Python] 회전하는 큐 본문
https://www.acmicpc.net/problem/1021
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가
www.acmicpc.net
간단한 문제다. python의 deque에 존재하는 rotate 함수를 사용하면 끝!
찾으려는 수가 해당 queue에서 어느 위치에 있는지 확인하고, 어느 방향으로 돌릴지만 결정하면 끝난다!
왼쪽은 +1, 오른쪽은 -1 로 표현해주면 된다.
import sys
from collections import deque
input=sys.stdin.readline
def solution(nums, total_size):
ans = 0
queue = deque([i+1 for i in range(total_size)])
for i in nums:
mid = len(queue) // 2
while queue[0]!=i :
if mid < queue.index(i) :
queue.rotate(1)
ans+=1
elif mid >= queue.index(i) :
queue.rotate(-1)
ans+=1
queue.popleft()
return ans
total_size, n = map(int, input().split())
nums = list(map(int, input().split()))
print(solution(nums, total_size))
'Coding Test > Python' 카테고리의 다른 글
[프로그래머스 / Python] 나누어 떨어지는 숫자 배열 (0) | 2024.02.21 |
---|---|
[BOJ 10818 / Python] 최소, 최대 (0) | 2024.02.21 |
[프로그래머스 / Python] 기능개발 (0) | 2024.02.20 |
[프로그래머스 / Python] 같은 숫자는 싫어 (0) | 2024.02.19 |
[BOJ 25556 / Python] 포스택 (0) | 2024.02.19 |