2022. 9. 30. 11:37ใํ๋ก๊ทธ๋๋จธ์ค-Swift
์คํจ์จ - ํ๋ก๊ทธ๋๋จธ์ค(Swift)
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/42889
๋์ ํ์ด
import Foundation
func solution(_ N:Int, _ stages:[Int]) -> [Int] {
var totalUser = [Int](repeating: 0, count: N+2)
var stopUser = [Int](repeating: 0, count: N+2)
var answerArr = [(Int, Float)](repeating: (0, 0.0), count: N+1)
stages.forEach { (stage) in
for i in (1...stage) {
totalUser[i] += 1
}
stopUser[stage] += 1
}
for i in (1...N) {
answerArr[i] = (i, Float(stopUser[i]) / Float(totalUser[i]))
}
print(answerArr)
return answerArr.sorted { $0.1 > $1.1 }.map {$0.0}.filter{$0 != 0}
}
๊ณ ์ฐจํจ์๋ฅผ ์ด์ฉํด์ ํ๋ ค๊ณ ํ๋ค๊ฐ ์๊ฐ์ด ์ข ๊ฑธ๋ ธ๋ค.. ๐ง
์คํจ์จ์ฒ๋ผ ๋น์จ์ ๋ํ๋ด๋ ๊ฒ๋ค์ ์ค์ํ์ผ๋ก ํด์ผํ๋ค๋ ๊ฒ๋ ํญ์ ์ผ๋ํด๋ฌ์ผ๊ฒ ๋ค.
๋ค๋ฅธ ์ฌ๋์ ํ์ด
๊ต์ฅํ ์ง๊ด์ ์ด๊ณ ๋ ผ๋ฆฌ์ ์ด์ฌ์ ๊ฐ์ ธ์๋ค.
import Foundation
func solution(_ N:Int, _ stages:[Int]) -> [Int] {
var failure: [Int: Float] = [:]
var player: Int = stages.count
for i in 1...N {
let n = stages.filter { $0 == i }.count
failure[i] = Float(n)/Float(player)
player -= n
}
return failure.sorted(by: <).sorted(by: { $0.value > $1.value }).map {$0.key}
}
1๋ถํฐ N๊น์ง ๋๋ฉด์ ํ์ํ๋ i๊ฐ stages์์ ๋ฉ์ถฐ์๋ ์คํ ์ด์ง ์ซ์์ ๊ฐ์ ๋๋ฅผ n์ผ๋ก ์ง์ ํ๋ฉด ์ด n์ ํน์ ์ซ์๊น์ง ๋๋ฌํ์ง๋ง ๊นจ์ง๋ชปํ ๊ฒฝ์ฐ๊ฐ ๋๋ค.
๊ทธ๋ฆฌ๊ณ player์์๋ ์ ์ฒด ์ซ์์์ ํ์ํ ๋๋ง๋ค n์ ๋นผ์ค์ผ๋ก์จ ๊ทธ ๋ค์ ํ์ํ๋ ๊ฐ์ ์ด์ ์ ๊ฐ๋ค์ด ๋๋ฌํ ์ ์๋ ๊ฒ์ ํํํ๋ค.
์์๋ก [2, 3, 4, 5]๋ผ๋ stages๋ฐฐ์ด์ด ์์๋ i๊ฐ 1๋ถํฐ 5๊น์ง ๋๋ฉด์ 2๊ฐ ๋์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์ด๋ 2์ธ ๊ฐ์ด ํ๋๊ฐ ์์ด์ player.count์ธ 4์์ 1์ ๋นผ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ i๊ฐ 3์ด๋ ๋๋ player.count๊ฐ 3์ธ ์ํ๋ก ์์๋๋ค. ๊ทธ ์ด์ ๊ฐ 2๋ 3์ ๋๋ฌํ์ง ๋ชปํ ์ซ์๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ง๋ง ์ด ์ฝ๋๋ ์๊ฐ ์ด๊ณผ๊ฐ ๋๋ค.
stages์ ๊ธธ์ด๊ฐ 200,000์ด๊ณ n์ 500๊น์ง๊ธฐ ๋๋ฌธ์ ์ด ๋์ ๊ณฑํด๋ณด๋ฉด 1์ต์ด ๋๋ค.
๊ทธ๋์ ์ง๊ด์ ์ด๊ณ ์ข์ ์ฝ๋์ง๋ง ์๊ฐ๋ณต์ก๋ ์ธก๋ฉด์์๋ ์์ฌ์ด ์ฝ๋์ธ ๊ฒ ๊ฐ๋ค. (์ฝ๋ฉํ ์คํธ์์๋)
ํผ๋๋ฐฑ
์ด ๋ฐ์๋ ์ฌ๋ฌ ์ฝ๋๋ฅผ ์ดํด๋ณด์๋๋ฐ ์ง๊ด์ ์ด์ง๋ง ์๊ฐ์ด๊ณผ๊ฐ ๋์ค๋ ์ฝ๋๊ฐ ๊ต์ฅํ ๋ง์๋ค.
๋งค ์๊ฐ ์ฝ๋์ ๊ฐ๊ฒฐํจ๊ณผ ์ฑ๋ฅ ์ฌ์ด์์ ์ ์ ํจ์ ์ฐพ๋ ๊ฒ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค.
'ํ๋ก๊ทธ๋๋จธ์ค-Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ - ํ๋ก๊ทธ๋๋จธ์ค(Swift) (0) | 2022.10.02 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ๋คํธ๊ฒ์(Swift) (0) | 2022.10.01 |
์์ ํ์ - ํ๋ก๊ทธ๋๋จธ์ค(Swift) (2) | 2022.09.29 |
2016๋ - ํ๋ก๊ทธ๋๋จธ์ค(Swift) (0) | 2022.09.28 |
K๋ฒ์งธ ์ - ํ๋ก๊ทธ๋๋จธ์ค(Swift) (0) | 2022.09.28 |