반응형
https://www.acmicpc.net/problem/1966
내 답안
from collections import deque
N = int(input())
for i in range(N):
N, M = map(int, input().split())
priority = deque(list(map(int, input().split())))
ind = deque([i for i in range(N)])
cnt = 0
while priority:
m = max(priority)
if priority[0] < m:
priority.append(priority.popleft())
ind.append(ind.popleft())
elif priority[0] == m:
priority.popleft()
cnt += 1
if ind.popleft() == M:
print(cnt)
break
Review
코드의 논리를 보면 다음과 같습니다.
1. 가장 큰 priority 정하기
2. 가장 큰 priority 와 현재 맨 앞에 있는 원소 비교
2-1. 맨 앞에 있는 원소 < 가장 큰 priority 원소 이면
해당 priority 원소와 인덱스 원소를 맨 뒤로 보내기
2-2. 맨 앞에 있는 원소 == 가장 큰 priority 원소 이면
출력 수(cnt) += 1
해당 원소 제거, 해당 인덱스가 궁금한 인덱스 인지 비교
2-2-1. 해당 인덱스 == 궁금한 인덱스 이면
index 출력하고
반복문 종료
해당 입력일 때의 로직을 그림으로 그려서 설명해 보겠습니다.
주어진 priority 와 ind 를 튜플 형태로 묶어서도 해결할 수 있는 문제지만
저는 따로 그림 처럼 나눠서 해결을 해보았습니다.
반응형
'BOJ > Python' 카테고리의 다른 글
백준 14502번 연구소 파이썬 BFS (0) | 2024.03.20 |
---|---|
백준 14719번 빗물 파이썬 (0) | 2024.03.19 |
[프로그래머스] 의상 파이썬 (1) | 2024.02.12 |
[프로그래머스] 키패드 누르기 파이썬 (2) | 2023.11.24 |
[프로그래머스] 신고 결과 받기 파이썬 (0) | 2023.11.20 |