반응형
프린터 Level2
문제 풀이:
1. 인덱스와 우선순위를 쌍으로 배열에 저장한다. 정렬한 우선순위를 다른 배열에 저장한다.
2. 첫번째 쌍의 우선순위와 정렬한 우선순위의 첫번째 값과 비교한다.
3. 우선순위가 같다면 카운트를 증가시키고 정렬한 우선순위 첫번째를 제거한다.
3-1. 쌍의 인덱스가 원하는 인덱스와 같다면 카운트 값을 리턴한다.
4. 우선순위가 같지 않다면 마지막에 다시 삽입한다.
코드:
import Foundation
func solution(_ priorities:[Int], _ location:Int) -> Int {
var result = 0
var list = [(Int, Int)]()
var pList = priorities.sorted(by: >)
for (i, priority) in priorities.enumerated() {
list.append((i, priority))
}
while !list.isEmpty {
let now = list.removeFirst()
let maxP = pList.first
if now.1 == maxP {
result += 1
pList.removeFirst()
if now.0 == location {
break
}
} else {
list.append(now)
}
}
return result
}
문제:
programmers.co.kr/learn/courses/30/lessons/42587
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Algorithm/Programmers] 가장 큰 정사각형 찾기 Swift (0) | 2021.01.14 |
---|---|
[Algorithm/Programmers] 피보나치 수 (0) | 2021.01.14 |
[Algorithm/Programmers] 스킬트리 (0) | 2021.01.14 |
[Algorithm/Programmers] 가장 큰 수 (0) | 2020.12.18 |
[Algorithm/Programmers] 여행 경로(DFS/BFS) (0) | 2020.12.12 |
댓글