- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42587
Lv2 문제이다. 어려워보이지 않아서 여러번 시도했지만, 실패했던 문제다. 풀이 다시 익히자!
문제 이해
1. 시작할 때 문제에서 원하는 위치의 값을 가진 걸 식별하기 위해서 priorities를 다시 세팅한다. (위치, 우선순위 값) 으로
2. 0인덱스에 있는 숫자보다 큰 숫자가 더 큰 숫자가 priorities에 있다면 해당 값은 다시 오른쪽 끝에 추가한다
3. 만약 priorities가 우선순위대로 정렬이 되었다면 이제 하나씩 빼면서 count += 1을 해준다
4. while문을 진행하다가 원하는 위치의 값을 마주쳤다면(value[0] == location) 그동안 셌던 count를 반환한다
- 정답 풀이 :
def solution(priorities, location):
for i in range(len(priorities)):
priorities[i] = (i, priorities[i]) #번호, 중요도
count = 0
while True:
value = priorities.pop(0)
flag = True
for i in range(len(priorities)):
#더 중요한 프린트물이 뒤에 있다
if value[1] < priorities[i][1]:
priorities.append(value)
flag = False
break
#가장 중요한 프린트물이 가장 첫번째일 때
if flag:
count += 1
if value[0] == location:
return count
'프로그래머스 > Level 2' 카테고리의 다른 글
[완전탐색 / 프로그래머스] 87946번 : 피로도(다시) (0) | 2022.09.23 |
---|---|
[스택,큐 / 프로그래머스] 42584번 : 주식가격 (0) | 2022.09.20 |
[해시 / 프로그래머스] 42577번: 전화번호 목록 (0) | 2022.09.19 |
[해시 / 프로그래머스] 42578번 : 위장 (0) | 2022.09.15 |
[정렬 / 프로그래머스] 42747번: H - index (0) | 2022.09.11 |