์ํผ ๊ฒ์ ๊ฐ๋ฐ์ ์ค๋ ๋ฆฌ๋ ํฐ ๊ณ ๋ฏผ์ ๋น ์ก๋ค. ๊ทธ๋ ๊ฐ ๋ง๋ ํ๋์ฆ ์ค์ฒ์ฑ์ด ๋์ฑ๊ณต์ ๊ฑฐ๋์ง๋ง, ์์ฆ ์ ๊ท ์ฌ์ฉ์์ ์๊ฐ ๊ธ๊ฐํ ๊ฒ์ด๋ค. ์์ธ์ ์ ๊ท ์ฌ์ฉ์์ ๊ธฐ์กด ์ฌ์ฉ์ ์ฌ์ด์ ์คํ ์ด์ง ์ฐจ์ด๊ฐ ๋๋ฌด ํฐ ๊ฒ์ด ๋ฌธ์ ์๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํ ๊น ๊ณ ๋ฏผ ํ ๊ทธ๋ ๋ ๋์ ์ผ๋ก ๊ฒ์ ์๊ฐ์ ๋๋ ค์ ๋์ด๋๋ฅผ ์กฐ์ ํ๊ธฐ๋ก ํ๋ค. ์ญ์ ์ํผ ๊ฐ๋ฐ์๋ผ ๋๋ถ๋ถ์ ๋ก์ง์ ์ฝ๊ฒ ๊ตฌํํ์ง๋ง, ์คํจ์จ์ ๊ตฌํ๋ ๋ถ๋ถ์์ ์๊ธฐ์ ๋น ์ง๊ณ ๋ง์๋ค. ์ค๋ ๋ฆฌ๋ฅผ ์ํด ์คํจ์จ์ ๊ตฌํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ผ.
- ์คํจ์จ์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ๋ค.
- ์คํ ์ด์ง์ ๋๋ฌํ์ผ๋ ์์ง ํด๋ฆฌ์ดํ์ง ๋ชปํ ํ๋ ์ด์ด์ ์ / ์คํ ์ด์ง์ ๋๋ฌํ ํ๋ ์ด์ด ์
์ ์ฒด ์คํ ์ด์ง์ ๊ฐ์ 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
|
'๐ Problem Solution > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ํ๋ฆฐํฐ Swift (0) | 2020.03.11 |
---|---|
2018 KAKAO BLIND RECRUITMENT [1์ฐจ] ๋คํธ๊ฒ์ (0) | 2020.03.06 |
2018 KAKAO BLIND RECUITMENT 1์ฐจ ๋น๋ฐ์ง๋ Swift (0) | 2020.03.04 |
ํ๋ก๊ทธ๋๋จธ์ค ์์ฐ Swift (0) | 2020.03.01 |
ํ๋ก๊ทธ๋๋จธ์ค ์ง์ฌ๊ฐํ ๋ณ์ฐ๊ธฐ Swift (0) | 2020.03.01 |
๋๊ธ