๐ ์ฝ๋ฉํ ์คํธ
โ๐ป Github
๋ฌธ์ ์ค๋ช
์ํผ ๊ฒ์ ๊ฐ๋ฐ์ ์ค๋ ๋ฆฌ๋ ํฐ ๊ณ ๋ฏผ์ ๋น ์ก๋ค. ๊ทธ๋ ๊ฐ ๋ง๋ ํ๋์ฆ ์ค์ฒ์ฑ์ด ๋์ฑ๊ณต์ ๊ฑฐ๋์ง๋ง, ์์ฆ ์ ๊ท ์ฌ์ฉ์์ ์๊ฐ ๊ธ๊ฐํ ๊ฒ์ด๋ค. ์์ธ์ ์ ๊ท ์ฌ์ฉ์์ ๊ธฐ์กด ์ฌ์ฉ์ ์ฌ์ด์ ์คํ ์ด์ง ์ฐจ์ด๊ฐ ๋๋ฌด ํฐ ๊ฒ์ด ๋ฌธ์ ์๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํ ๊น ๊ณ ๋ฏผ ํ ๊ทธ๋ ๋ ๋์ ์ผ๋ก ๊ฒ์ ์๊ฐ์ ๋๋ ค์ ๋์ด๋๋ฅผ ์กฐ์ ํ๊ธฐ๋ก ํ๋ค. ์ญ์ ์ํผ ๊ฐ๋ฐ์๋ผ ๋๋ถ๋ถ์ ๋ก์ง์ ์ฝ๊ฒ ๊ตฌํํ์ง๋ง, ์คํจ์จ์ ๊ตฌํ๋ ๋ถ๋ถ์์ ์๊ธฐ์ ๋น ์ง๊ณ ๋ง์๋ค. ์ค๋ ๋ฆฌ๋ฅผ ์ํด ์คํจ์จ์ ๊ตฌํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ผ.
- ์คํจ์จ์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ๋ค.
- ์คํ ์ด์ง์ ๋๋ฌํ์ผ๋ ์์ง ํด๋ฆฌ์ดํ์ง ๋ชปํ ํ๋ ์ด์ด์ ์ / ์คํ ์ด์ง์ ๋๋ฌํ ํ๋ ์ด์ด ์
์ ์ฒด ์คํ ์ด์ง์ ๊ฐ์ N, ๊ฒ์์ ์ด์ฉํ๋ ์ฌ์ฉ์๊ฐ ํ์ฌ ๋ฉ์ถฐ์๋ ์คํ ์ด์ง์ ๋ฒํธ๊ฐ ๋ด๊ธด ๋ฐฐ์ด stages๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์คํจ์จ์ด ๋์ ์คํ ์ด์ง๋ถํฐ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์คํ ์ด์ง์ ๋ฒํธ๊ฐ ๋ด๊ฒจ์๋ ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ๋ผ.
์ ํ์ฌํญ
- ์คํ ์ด์ง์ ๊ฐ์ N์ 1 ์ด์ 500 ์ดํ์ ์์ฐ์์ด๋ค.
- stages์ ๊ธธ์ด๋ 1 ์ด์ 200,000 ์ดํ์ด๋ค.
- stages์๋ 1 ์ด์ N + 1 ์ดํ์ ์์ฐ์๊ฐ ๋ด๊ฒจ์๋ค.
- ๊ฐ ์์ฐ์๋ ์ฌ์ฉ์๊ฐ ํ์ฌ ๋์ ์ค์ธ ์คํ ์ด์ง์ ๋ฒํธ๋ฅผ ๋ํ๋ธ๋ค.
- ๋จ, N + 1 ์ ๋ง์ง๋ง ์คํ ์ด์ง(N ๋ฒ์งธ ์คํ ์ด์ง) ๊น์ง ํด๋ฆฌ์ด ํ ์ฌ์ฉ์๋ฅผ ๋ํ๋ธ๋ค.
- ๋ง์ฝ ์คํจ์จ์ด ๊ฐ์ ์คํ ์ด์ง๊ฐ ์๋ค๋ฉด ์์ ๋ฒํธ์ ์คํ ์ด์ง๊ฐ ๋จผ์ ์ค๋๋ก ํ๋ฉด ๋๋ค.
- ์คํ ์ด์ง์ ๋๋ฌํ ์ ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋น ์คํ ์ด์ง์ ์คํจ์จ์ 0 ์ผ๋ก ์ ์ํ๋ค.
์ ์ถ๋ ฅ ์
N | stages | result |
5 | [2, 1, 2, 6, 2, 4, 3, 3] | [3,4,2,1,5] |
4 | [4,4,4,4,4] | [4,1,2,3] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
1๋ฒ ์คํ ์ด์ง์๋ ์ด 8๋ช ์ ์ฌ์ฉ์๊ฐ ๋์ ํ์ผ๋ฉฐ, ์ด ์ค 1๋ช ์ ์ฌ์ฉ์๊ฐ ์์ง ํด๋ฆฌ์ดํ์ง ๋ชปํ๋ค. ๋ฐ๋ผ์ 1๋ฒ ์คํ ์ด์ง์ ์คํจ์จ์ ๋ค์๊ณผ ๊ฐ๋ค.
- 1 ๋ฒ ์คํ ์ด์ง ์คํจ์จ : 1/8
2๋ฒ ์คํ ์ด์ง์๋ ์ด 7๋ช ์ ์ฌ์ฉ์๊ฐ ๋์ ํ์ผ๋ฉฐ, ์ด ์ค 3๋ช ์ ์ฌ์ฉ์๊ฐ ์์ง ํด๋ฆฌ์ดํ์ง ๋ชปํ๋ค. ๋ฐ๋ผ์ 2๋ฒ ์คํ ์ด์ง์ ์คํจ์จ์ ๋ค์๊ณผ ๊ฐ๋ค.
- 2 ๋ฒ ์คํ ์ด์ง ์คํจ์จ : 3/7
๋ง์ฐฌ๊ฐ์ง๋ก ๋๋จธ์ง ์คํ ์ด์ง์ ์คํจ์จ์ ๋ค์๊ณผ ๊ฐ๋ค.
- 3 ๋ฒ ์คํ ์ด์ง ์คํจ์จ : 2/4
- 4๋ฒ ์คํ ์ด์ง ์คํจ์จ : 1/2
- 5๋ฒ ์คํ ์ด์ง ์คํจ์จ : 0/1
๊ฐ ์คํ ์ด์ง์ ๋ฒํธ๋ฅผ ์คํจ์จ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- [3,4,2,1,5]
์ ์ถ๋ ฅ ์ #2
๋ชจ๋ ์ฌ์ฉ์๊ฐ ๋ง์ง๋ง ์คํ ์ด์ง์ ์์ผ๋ฏ๋ก 4๋ฒ ์คํ ์ด์ง์ ์คํจ์จ์ 1์ด๋ฉฐ ๋๋จธ์ง ์คํ ์ด์ง์ ์คํจ์จ์ 0์ด๋ค.
- [4,1,2,3]
๋ฌธ์ ํ์ด
๋์ ํ์ด
import Foundation
func solution(_ N: Int, _ stages: [Int]) -> [Int] {
var failureRates: [(Int, Double)] = []
var failPlayer = [Int: Int]()
var totalPlayers = stages.count
for i in stages {
failPlayer[i] = ( failPlayer[i] ?? 0 ) + 1
}
for i in 1...N {
guard let failPlayer = failPlayer[i] else {
failureRates.append((i, 0))
continue
}
let failureRate = Double(failPlayer) / Double(totalPlayers)
failureRates.append((i, failureRate))
totalPlayers -= failPlayer
}
return failureRates.sorted { $0.1 > $1.1 }.map { $0.0 }
}
๋์๊ฒ ์ฒ์ฐธํ ์คํจ๊ฐ์ ์๊ฒจ์ค ๋ฌธ์ .
์ ๋ฒ์ฃผ๋ถํฐ ํ์์ง๋ง, 3๋ฒ 9๋ฒ 21๋ฒ์ ์๊ฐ์ด๊ณผ ๋ฌธ์ ๋ก ์ ๋ฅผ ๋จน์๋ค.
๋์ ํ์ด์์์ ๋ฌธ์ ์ ์ N์ด ๋์๊ฐ๋ for๋ฌธ ์์์ failurePlayer ( ํด๋น ์คํ ์ด์ง์์๋ฅผ ๊นจ์ง ๋ชปํ๋ ํ๋ ์ด์ด ) ๋ฅผ ๊ตฌํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ์ต๋ ์คํ์๊ฐ์ด 500 * 200,000 ์ด ๋์ด๋ฒ๋ฆฐ ๊ฒ์ด๋ค. ๊ฑฐ๊ธฐ๊น์ง ์๊ฐํด๋ด์ง ๋ชปํ๋ ๋ด๊ฐ ๋๋ฌด ํ์ฌํ๊ณ .. ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ๋ง ์ง๊ณ ์ถ์ด์ for๋ฌธ์์ for๋ฌธ์ด ๋์๊ฐ๋ค๋ ๊ฒ์ ์ธ์งํ์ง ๋ชปํ๋ค. ์ ๋ฌดํํ ์ค๋ต ํ๋ ฌ์ด ์ง์ง ์ด ์ด์ ๋ง์ด์๋ค๋๊ฒ ๋ฏฟ๊ธฐ์ง๊ฐ ์๋๋ค. ๊ทธ๋๋ ๋ญ ์ด์งธ, ์ด์ ๋ผ๋ ์์์ผ๋ ๋ค์๋ถํฐ๋ for๋ฌธ์์ for๋ฌธ์ ๋ฃ์ง ์๋๋ก ์คํ ์๊ฐ์ด ๋๋ ค์ง๋ ์ด์ ๋ฅผ ๋ถ์ํ๊ณ ๋ถ์ํด ๊ฐ์ ์ค์๋ฅผ ๋ฐ๋ณตํ์ง ์์์ผ ํ๋ค.
failplayer๋ฅผ ๊ตฌํ๋ ๊ณผ์ ์ for๋ฌธ์์ ๋ถ๋ฆฌ๋ง ํด์ฃผ์๋๋ฐ๋ ์คํ์๊ฐ์ด 500 + 200,000์ด ๋์ด์ ํ ์ค์ด๋ค์๋ค.
๋ ์คํ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ๋ฐฐ์ด → ๋์ ๋๋ฆฌ → ํํ ๋ก ๋ฐ๊พธ๋ ๊ณผ์ ์ ๊ฑฐ์ณค์ง๋ง, ๋ค ์ธ๋ฐ์๋ ์ผ์ด์๋ค. ๊ทธ๋๋ ๊ทธ ๊ณผ์ ์์ ์ป์ ๊ฒ์ ํ์คํ๊ฒ ์๋ค.
[ ๋์ ๋๋ฆฌ๋ฅผ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ ]
โ๏ธ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
let dictionary = ["b": 1, "a": 2, "c": 3]
let sortedDictionary = dictionary.sorted { $0.key < $1.key }
print(sortedDictionary) // ์ถ๋ ฅ: [("a", 2), ("b", 1), ("c", 3)]
โ๏ธ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
let dictionary = ["b": 1, "a": 2, "c": 3]
let sortedDictionary = dictionary.sorted { $0.value < $1.value }
print(sortedDictionary) // ์ถ๋ ฅ: [("b", 1), ("a", 2), ("c", 3)]
์ฌ๊ธฐ์ key ๊ฐ๋ง์ value ๊ฐ๋ง์ ๋นผ์ค๊ณ ์ถ๋ค๋ฉด, .map{ $0.key } ๋ฅผ ํ๊ฑฐ๋ .map{ $0.value }๋ฅผ ํด์ฃผ๋ฉด ๋๋ค.
๋ค๋ฅธ ์ฌ๋ ํ์ด
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}
}
๋๋ ์ด ํ์ด๋ก ํ์๋๋ฐ ์๊ฐ์ด๊ณผ ๋ณ๋๋ฐ ์ด์ฌ๋์ ์..!!!! ์ค๋ง Double์ด ์๋ Float๋ก ํ์ด์?!
mport Foundation
func solution(_ N:Int, _ stages:[Int]) -> [Int] {
var array = Array<Int>(repeating: 0, count: N)
stages.filter { $0 <= N }.forEach { array[$0 - 1] += 1 }
return array.reduce(([Double]() ,stages.count)) {
let rate = Double($1) / Double($0.1)
return ($0.0 + [rate], $0.1 - $1)
}.0
.enumerated()
.sorted { $0.element > $1.element }
.map { $0.offset + 1 }
}
ํ์ด ๊ณผ์ ์ด ํจ์ฌ ๊น๋ํ๋ค. ์ค๋๋ ์ ๋ฐฐ์ฐ๊ณ ๊ฐ๋๋ค~!