https://www.hackerrank.com/challenges/climbing-the-leaderboard/problem?isFullScreen=true
func climbingLeaderboard(ranked: [Int], player: [Int]) -> [Int] {
var res = Array(repeating: 0, count: player.count)
var uniqueRanked = [Int]()
for score in ranked {
if let lastScore = uniqueRanked.last, lastScore == score {
continue
}
uniqueRanked.append(score)
}
var i = uniqueRanked.count - 1
for j in 0..<player.count {
while i >= 0 {
if player[j] >= uniqueRanked[i] {
i -= 1
} else {
break
}
}
res[j] = i + 2
}
return res
}
ranked ๋ฐฐ์ด์ ์ํํ๋ฉด์ uniqueRanked ๋ฐฐ์ด์ ์ป์ด๋ธ ๋ค์,
player ๋ฐฐ์ด์ ์ํํ๋ฉด์
uniqueRanked ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ถํฐ ์ญ์ผ๋ก ์ํํ๋ค.
์ด์ while๋ฌธ์ ์ํํ๋ฉด์ player๊ฐ ๋ช๋ฑ์ธ์ง ์ฐพ์๊ฑฐ๋ค.
๋ง์ฝ player์ ์ ์๊ฐ uniqueRank์ ์ ์ฅ๋ ์ ์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด i์ ๊ฐ์ ๋นผ์ค๋ค. (๋ช๋ฑ์ธ์ง ์๊ธฐ ์ํด)
i+2๊ฐ์ด player์ ๋ฑ์๊ฐ ๋๋ค. (i+1 : uniqueRank์ ์ ์ฅ๋ ์ ์์ ๋ฑ์)
๋ฐ์ํ
'๐ ์ฝํ > HackerRank' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ตฌํ] Extra Long Factorials (0) | 2023.05.17 |
---|---|
[๊ตฌํ] Picking Numbers (0) | 2023.05.15 |