코드
test_case = int(input())
for _ in range(test_case):
n,m = map(int, input().split())
queue = list(map(int, input().split()))
queue = [(i, index) for index, i in enumerate(queue)] # 튜플 형태로
# [(2,0), (1,1), (4,2), (3,3)]
count = 0
while True:
if queue[0][0] == max(queue, key=lambda x: x[0])[0]: #맨앞==현재큐의 가장큰중요도
count += 1
if queue[0][1] == m:
print(count)
break
else:
queue.pop(0)
else: # 맨앞이 현재 큐의 가장 큰 중요도가 아닐 때
queue.append(queue.pop(0)) # 큐의 맨앞을 큐의 맨뒤로 옮기기
입력 예제를 이해하는데 매우 오래걸렸다;;
큐가 어떻게 작동하는지 알아야 하고,
튜플 형태로 큐를 변환할 수 있어야 한다.
튜플 형태로 큐를 변환하면 따로 인덱스를 나타내는 리스트를 만들지 않아도 된다. 굉장히 유용하다.
enumerate
- 반복문 사용 시 몇 번째 반복문인지 확인이 필요할 수 있다. 이때 사용한다.
- 인덱스 번호와 컬렉션의 원소를 tuple형태로 반환한다.
t = [1, 5, 7, 33, 39, 52]
for p in enumerate(t):
print(p)
>>
(0, 1)
(1, 5)
(2, 7)
(3, 33)
(4, 39)
(5, 52)
for i, v in enumerate(t):
print("index : {}, value: {}".format(i,v))
>>
index : 0, value: 1
index : 1, value: 5
index : 2, value: 7
index : 3, value: 33
index : 4, value: 39
index : 5, value: 52
'⏰ 코딩테스트 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 - 2750 - 수 정렬하기 (0) | 2021.08.20 |
---|---|
백준 알고리즘 - 5397 - 키로거 (0) | 2021.08.19 |
백준 알고리즘 - 1874 - 스택 수열 (0) | 2021.08.17 |
백준 알고리즘 - 2798 - 블랙잭 (0) | 2021.08.16 |
백준 알고리즘 - 2920 - 음계 (0) | 2021.08.16 |