2019 KAKAO BLIND RECUITMENT μ€ν¨μ¨ Swift
μνΌ κ²μ κ°λ°μ μ€λ 리λ ν° κ³ λ―Όμ λΉ μ‘λ€. κ·Έλ κ° λ§λ νλμ¦ μ€μ²μ±μ΄ λμ±κ³΅μ κ±°λμ§λ§, μμ¦ μ κ· μ¬μ©μμ μκ° κΈκ°ν κ²μ΄λ€. μμΈμ μ κ· μ¬μ©μμ κΈ°μ‘΄ μ¬μ©μ μ¬μ΄μ μ€ν μ΄μ§ μ°¨μ΄κ° λ무 ν° κ²μ΄ λ¬Έμ μλ€.
μ΄ λ¬Έμ λ₯Ό μ΄λ»κ² ν κΉ κ³ λ―Ό ν κ·Έλ λ λμ μΌλ‘ κ²μ μκ°μ λλ €μ λμ΄λλ₯Ό μ‘°μ νκΈ°λ‘ νλ€. μμ μνΌ κ°λ°μλΌ λλΆλΆμ λ‘μ§μ μ½κ² ꡬννμ§λ§, μ€ν¨μ¨μ ꡬνλ λΆλΆμμ μκΈ°μ λΉ μ§κ³ λ§μλ€. μ€λ 리λ₯Ό μν΄ μ€ν¨μ¨μ ꡬνλ μ½λλ₯Ό μμ±νλΌ.
- μ€ν¨μ¨μ λ€μκ³Ό κ°μ΄ μ μνλ€.
- μ€ν μ΄μ§μ λλ¬νμΌλ μμ§ ν΄λ¦¬μ΄νμ§ λͺ»ν νλ μ΄μ΄μ μ / μ€ν μ΄μ§μ λλ¬ν νλ μ΄μ΄ μ
μ 체 μ€ν μ΄μ§μ κ°μ 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] |
νμ΄:μ°μ μ failμ΄λΌλ λμ λ리λ₯Ό λ£μ΄ κ° μ€ν μ΄μ§μ μ€ν¨μ¨μ keyμ valueκ°μΌλ‘ λ£λλ€.
μ€ν¨μ¨μ ꡬνλ λ²μ μ°μ stagesμ μ‘΄μ¬νλ μ«μλ€μ μ°¨λ‘λλ‘ κ°―μλ₯Ό countλΌλ λ³μλ‘ μΈμ΄μ€λ€.
λ§μ½ 0μ΄λΌλ©΄ ν΄λΉ μ€ν μ΄μ§μ μ€ν¨μ¨μ 0μΌλ‘ λ£κ³ μλλΌλ©΄ λ¨μ νλ μ΄μ΄λ₯Ό countλ‘ λλ μ€λ€.
μ) μ΄ 2λ¨κ³μ μ€ν μ΄μ§μμ 8λͺ μ νλ μ΄μ΄ μ€ 7λͺ μ΄ 1λ¨κ³ 1λͺ μ΄ 2λ¨κ³μ μλ€λ©΄
1λ¨κ³μ 7λͺ μ΄ μμΌλ―λ‘ 7/8 μ΄ μ€ν¨μ¨μ΄ λλ€.
2λ¨κ³μμ 7λͺ μ΄ μ΄λ―Έ 1λ¨κ³μ μμΌλ―λ‘ 8-7 = 1 1μ 1λ‘ λλ μ£Όλ©΄ μ€ν¨μ¨μ 1μ΄ λλ€.
κ·Έλ κ² κ΅¬ν΄μ€ λ€ μ€λ³΅κ°μ λΉΌκΈ° μν΄ sλΌλ setλ³μλ₯Ό λ§λ€μ΄μ£Όκ³ failμ valueκ°μ λͺ¨λ λ£μ λ€μμ
forλ¬Έμ sλ₯Ό μμ λ ¬ν κ² μ€ failμ ν€ κ°μ΄ κ°μ κ² μλ€λ©΄ arrμ λ£μ΄μ€λΌ λΌκ³ νλ©΄ indexκ° μ°¨λ‘λλ‘ μ€ν¨μ¨μ΄ λμ κ°μ λ°λΌ λ€μ΄κ°λ€.
1.λμ λλ¦¬λ‘ ν€μ λ°Έλ₯κ°μ λ§λ€κ³
2.μΈνΈμ λ°Έλ₯κ°λ§ λ£μ΄μ μ λ ¬ν΄ μ€ λ€
3.λ€μ ν¬λ¬ΈμΌλ‘ μΈνΈκ°κ³Ό failμ λ°Έλ₯κ°μ λΉκ΅ν΄μ£Όλ©΄ μ λ ¬λ ν€κ°μ μμλΌ μ μλ€.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import Foundation
func solution(_ N:Int, _ stages:[Int]) -> [Int] {
var fail = [Int:Double]()
var arr = [Int]()
var s = Set<Double>()
for j in 1...N{
var count = 0
if stages[i] == j{
count += 1
}
}
if count == 0{
fail[j] = 0
}else{
fail[j] = Double(count)/Double(left)
}
left = left - count
}
for (_,value) in fail{
s.insert(value)
}
for i in s.sorted(by:>){
if i == fail[j]{
}
}
}
return arr
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
λ€λ₯Έ μ¬λ νμ΄ μ€ κ°μ₯ μ’λ€κ³ μκ°νλ κ²
νμ΄:μ°μ Array(repeating,count)λ₯Ό μ΄μ©ν΄μ μ€ν μ΄μ§ κ°―μμ +1λ§νΌμ κΈΈμ΄μ λ°°μ΄μ λ§λ€μ΄μ€λ€.
κ·Έ λ€μ ν¬λ¬Έμ μ΄μ©νμ¬ μμμΌλ‘ λ§λ€μ΄μ€λ€.
κ·Έλ¦¬κ³ κ·Έκ²μ λ§κ² rμ μ€ν¨μ¨μ λ£μ΄μ€λ€.
rμ enumrated()λ‘ offsetκ³Ό elementλ₯Ό μμλ΄μ΄ elementκ°μ λ§κ² μμμΌλ‘ μ λ ¬ν΄μ€λ€ κ° elementμ offsetμ +1 ν΄μ€ κ°μ mapμ ν΅ν΄ λ°°μΉνλ€.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import Foundation
func solution(_ n: Int, _ stages: [Int]) -> [Int] {
var rates = Array(repeating: 0, count: n + 1)
for stage in stages {
for i in 0..<stage {
rates[i] += 1
}
}
var r = [Double]()
for i in 0..<n {
let offset = i + 1
r.append(Double(rates[i] - rates[offset]) / Double(rates[i]))
}
return r.enumerated()
.sorted(by: { $0.element > $1.element })
.map({ $0.offset + 1 })
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|