2022. 10. 14. 15:02ใํ๋ก๊ทธ๋๋จธ์ค-Swift
ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ฆฐํฐ(Swift)
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/42587
๋ค๋ฅธ์ฌ๋์ ํ์ด
์ฐ์ ์์ ํ ๋ฌธ์ ๋ผ๋ ๊ฒ์ ์์์ง๋ง ์ด๋ป๊ฒ ๊ตฌํํด์ผํ๋์ง, ์ด ๋ฌธ์ ์์๋ ์ด๋ป๊ฒ ์ฌ์ฉํด์ผํ ์ง ๋ชฐ๋ผ์ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๋ค.
import Foundation
func solution(_ priorities:[Int], _ location:Int) -> Int {
var queue: [(Int, Int)] = priorities.enumerated().map{ return ($0.offset, $0.element)}
var priorityQueue = priorities.sorted(by: >)
var result = 0
while !queue.isEmpty {
let first = queue.removeFirst()
if first.1 == priorityQueue.first! {
result += 1
if first.0 == location {
break
}
priorityQueue.removeFirst()
} else {
queue.append(first)
}
}
return result
}
๋ฌธ์ ์ location์ ์ ๊ทผํ๊ธฐ ์ํด์ enumeratedํ ํ map์์ผ์ ๋ฐฐ์ด์ ํํ๋ก ๋ง๋ ๊ฒ์ ํ๋ก ์ ์ํ๋ค. ์ฌ๊ธฐ์ enumerated๋ง ์ฌ์ฉํ๊ณ map์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด EnumeratedSequence<Array<Int>>๋ผ๋ ์๋ก์ด ํ์ ์ด ์๊ธฐ ๋๋ฌธ์ map์ ํด์ค์ผ ํ๋ค.
๋ ๋ฒ์งธ๋ก ์ฐ์ ์์ ํ๋ฅผ ์ ์ํ๋๋ฐ ์ค์ ์ฐ์ ์์ ํ๋ ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํด์ ์ฝ์ ๋ฐ ์ ๊ฑฐ์ O(logN)์ ๋ฐ๋ฅด๋ ์๋ฃ๊ตฌ์กฐ์ด์ง๋ง ๊ฒฐ๊ตญ ์ต๋๊ฐ์ ๋งจ ์ ์ธ๋ฑ์ค์์ ๋ฝ๋๋ค๋ ๋งฅ๋ฝ๊ณผ ๋์ผํ๊ฒ sort๋ก ๊ฐ๋จํ๊ฒ ๊ตฌํํด์ฃผ์๋ค.
์ด์ ์ด ๋ ๊ฐ์ ํ๋ฅผ ๋น๊ตํ๋ฉด์ location๊ณผ queue์ offset์ด ๋์ผํด์ง๋ ์์ ์ result๋ฅผ ๋ฐํํด์ฃผ๋ฉด ๋๋ค.
'ํ๋ก๊ทธ๋๋จธ์ค-Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ์คํ์ฑํ ๋ฐฉ(Swift) (0) | 2022.10.17 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ๋ด์ค ํด๋ฌ์คํฐ๋ง(Swift) (1) | 2022.10.15 |
ํ๋ก๊ทธ๋๋จธ์ค - ๊ธฐ๋ฅ๊ฐ๋ฐ(Swift) (0) | 2022.10.14 |
ํ๋ก๊ทธ๋๋จธ์ค - ์์ฅ(Swift) (0) | 2022.10.14 |
ํ๋ก๊ทธ๋๋จธ์ค - n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ (0) | 2022.10.13 |