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
- 재귀
- 동적프로그래밍
- 1로만들기2
- BOJ
- 브루트포스
- 15353
- Flutter
- 스택
- Python
- 4811
- BOJ14889
- 백준
- 1781
- 해시해킹
- 그리디
- sw expert academy
- 삼성
- spring boot
- 서울에서경산까지
- dart
- 14863
- 회전하는큐
- D1
- Crossfit
- 26008
- DP
- 크로스핏
- C++
- 재귀함수
- 15662
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 |
Comments