3/21学習問題


最初の問題
https://www.acmicpc.net/problem/1021
->キューの回転
テストケースについて

1番解題コード

import sys

# 큐의 크기, 뽑아내려는 수의 개수
n, m = list(map(int, sys.stdin.readline().split()))
# 큐
que = [i for i in range(1, n + 1)]
# 뽑아내려는 수
pickNums = list(map(int, sys.stdin.readline().split()))
#연산 횟수
cnt = 0
# print(queue)

# 연산1 : 처음 오는 수를 뽑을 수 있다.
while pickNums:
    # 연산 조건 : 뽑으려는 수 큐의 앞쪽에 가깝나 뒤에 가깝나를 기준으로 한다.

    # 연산2 : 앞쪽에 가까우면 왼쪽으로 한 칸 이동
    if que.index(pickNums[0]) < len(que) - que.index(pickNums[0]):
        while True:
            # 만약 뽑아야 하는 수가 앞에 있으면 뽑음
            if que[0] == pickNums[0]:
                del que[0] # 큐에서 제거
                del pickNums[0] # 뽑아야 하는 수도 제거
                break
            # 연산2 수행
            else:
                que.append(que[0])
                del que[0]
                cnt +=1
    # 연산3 : 뒤쪽에 가까우면 오른쪽으로 한 칸 이동
    else:
        while True:
            # 만약 뽑아야 하는 수가 앞에 있으면 뽑음
            if que[0] == pickNums[0]:
                del que[0] # 큐에서 제거
                del pickNums[0] # 뽑아야 하는 수도 제거
                break
            # 연산2 수행
            else:
                que.insert(0, que[-1])
                del que[-1]
                cnt +=1

print(cnt)
=======================================================
今日は誕生日なので気持ちがいいのですが、お祝いの電話がたくさんかかってきたので、ちょっと集中できませんでした.ふふ、明日はもっと頑張ろう!
**ポップを使うともっと時間がかかります!delで解くと成功した.