728x90
반응형
programmers.co.kr/learn/courses/30/lessons/42628
안녕하세요 후르륵짭짭 입니다.
오랜만에 알고리즘 문제를 들고 온 것 같습니다.
어렵지 않는데, 그냥 글을 올립니다 ㅎㅎㅎ
** 문제 해결 **
hururuek-chapchap.tistory.com/116
예전에 우선순위 큐를 구현 하는 방법에 대해서 설명 했습니다.
그러면 정말 간단하게 아래 코드 처럼 적어주면 끝~!
func solution(_ operations:[String]) -> [Int] {
var maxHeap : [Int] = []
for element in operations{
let split = element.components(separatedBy: " ")
let commend = split[0]
let number = split[1]
if commend == "I"{
makeMAXHeap(&maxHeap, Int(number)!)
}
else {
if maxHeap.isEmpty {continue}
if number == "1"{
maxHeap.removeLast()
}
else{
maxHeap.removeFirst()
}
}
}
print(maxHeap)
return maxHeap.isEmpty ? [0,0] : [maxHeap.max()! , maxHeap.min()!]
}
func makeMAXHeap (_ maxHeap : inout [Int] ,_ number : Int){
var start = 0
var end = maxHeap.count - 1
if maxHeap.isEmpty {
maxHeap.append(number)
return
}
while start <= end {
let mid = (start + end) / 2
if maxHeap[mid] < number {
start = mid + 1
}
else{
end = mid - 1
}
}
maxHeap.insert(number, at: start)
}
어차피 배열로 정렬이 되기 때문에 , 큰 문제 없이 최소값은 removeFirst 해주고 최대 값은 removeLast 해주면
됩니다.
간단하죠??
728x90
반응형
'Xcode > Swift - Algorithm' 카테고리의 다른 글
Swift ) 프로그래머스(Lv3) - 가장 긴 팰린드롬 (Recursion) (0) | 2020.10.07 |
---|---|
Swift ) 프로그래머스(Lv3) - 순위 (BFS / Floyd-Warshall) (1) | 2020.10.06 |
Swift ) 프로그래머스 (Lv3) - 방문길이 (Hash OR Set) (0) | 2020.09.26 |
Swift ) 프로그래머스(Lv3) - 디스크 컨트롤러 (PriorityQueue) (0) | 2020.09.25 |
Swift) 프로그래머스(Lv3) - 자물쇠와 열쇠 (Simulation) (1) | 2020.09.23 |
댓글