대기열을 조건에 맞게 배열하고 주어진 배열에 주어진 인덱스가 몇번째로 출력되는지 맞추는 문제이다.
풀이 참고 : https://eda-ai-lab.tistory.com/461
def solution(priorities, location): prt = [] order = [] for i, j in enumerate(priorities) : prt.append(j) order.append(i) k = 0 while True : if prt[k] < max(prt[k+1:]) : prt.append(prt.pop(k)) order.append(order.pop(k)) else : k += 1 if prt == sorted(prt, reverse=True) : answer = order.index(location) + 1 break return answer
- 문제에 따라 중요도가 가장 크지 않으면 맨 뒤로 보내줘야 하지만, 주어진 리스트의 인덱스를 기억 해놔야 하기 때문에 리스트를 2개로 놓는다.
prt
리스트의k
번째 요소값이 나머지보다 크지 않다면 맨 뒤로 보내준다.prt
리스트의k
번째 요소값이 나머지보다 크다면k
값에1
을 더해줘서 큰 숫자부터 차례대로 정렬되게 만들어준다.- 계속 정렬되면 결국에는
sort
된 리스트와 같아지게된다.- 이 때 인덱스 값의 인덱스를 찾아서 +1을 해준다
- +1은 인덱스를 0부터 시작하기 때문에 필요
- 한 개의 리스트 안에서 크기를 비교할 수 있는 방법을 배웠다.
- 다른 사람의 코드를 이해하는 것도 쉬운 일이 아니다.