[Python] 백준 1021 : 회전하는 큐
2022. 10. 25. 20:30ㆍAlgorithm/백준
level : silver 3
문제 링크 : 회전하는 큐
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가
www.acmicpc.net
My Solution
import sys
data = sys.stdin.read().splitlines()
[N, L] = list(map(int, data.pop(0).split()))
data = list(map(int, data.pop(0).split()))
def solution(n, length, arr):
answer = 0
matrix = [i + 1 for i in range(n)]
for item in arr:
index = matrix.index(item)
temp = matrix[:index]
matrix = matrix[index+1:]
if(len(temp)>len(matrix)):
answer+=1
answer+=min(len(temp),len(matrix))
matrix.extend(temp)
return answer
print(solution(N,L,data))
풀이방법
solution함수의 파라미터인 n은 N개의 원소의 개수이고
matrix라는 1부터 n까지를 가지고 있는 list를 생성한다.
for문을 이용하여 arr의 원소들을 차례대로 item에 넣는다.
matrix에서 item의 index를 기준으로 temp와 matrix를 넣는다.
이때, 뒤에 있는 list인 matrix가 temp보다 작은 경우 answer에다 1을 증가시킨다.
temp와 matrix의 길이 중 더 작은 것을 answer에 더해준다.
마지막으로 matrix에 temp를 붙여준다.
* item이 항상 0번째에 있어야 하기에 item이 있는 index기준으로 앞에 있는 list와 뒤에 있는 list는 항상 교차되어 합쳐진다.
느낀점
Python에서는 입출력 코드가 익숙치 않았지만 쓰다보면 익숙해질 것이다.
'Algorithm > 백준' 카테고리의 다른 글
[JavaScript] 백준 14852 : 타일 채우기 3 (0) | 2023.06.22 |
---|---|
[JavaScript] 백준 1446 : 지름길 (0) | 2022.12.13 |
[JavaScript] 백준 1038 : 감소하는 수 (0) | 2022.10.09 |
[JavaScript] 백준 1138 : 한 줄로 서기 (0) | 2022.10.06 |
[JavaScript] 백준 1058 : 친구 (1) | 2022.09.29 |