๋ฐ์ํ
๋ฌธ์ ๋งํฌ
https://programmers.co.kr/learn/courses/30/lessons/92334
๋ฌธ์ ํ์ด
์ฐ์ ์ ๊ณ ๋นํ์ฌ๋์ ๊ธฐ์ค์ผ๋ก ์ ๊ณ ํ์ฌ๋์๊ฒ ๋ฉ์ผ์ ๋ณด๋ด๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ dictionary๋ฅผ ์ค์ ํ ๋ "์ ๊ณ ๋นํ์ฌ๋์ Key"๋ก ๋๊ณ , "์ ๊ณ ํ ์ฌ๋์ Value"๋ก ๋์๋ค. ๊ทธ๋์ ๋ด๊ฐ ์ ์ธํ ๋ณ์๋ค์ ์๋์ ๊ฐ๋ค.
- reported_report ๋์ ๋๋ฆฌ : ์ ๊ณ ๋นํ์ฌ๋key, ์ ๊ณ ํ์ฌ๋value
- ์ผ๋ง๋ ์ ๊ณ ๋ฅผ ๋นํ๋์ง ์ธ์ด์ค count ๋์ ๋๋ฆฌ → ์ด๊ฒ ๊ณง ์ ๋ต
- ์ฃผ์ด์ง report ๋ "์ ๊ณ ํ์ฌ๋ ์ ๊ณ ๋นํ์ฌ๋"์ ํํ์ด๊ธฐ ๋๋ฌธ์ ๋๋์ด์ ๋์ ๋๋ฆฌ์ key์ value ๋ก ๊ฐ๊ฐ ์ ์ฅํด์ค ๊ฒ์
์ด๊ฒ์ ์ฝ๋๋ก ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์, ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ค์ํ์ฌ์ค ์ค ํ๋๋, ๋ด๊ฐ A๋ผ๋์ฌ๋์ 6๋ฒ ์ ๊ณ ํ๋๋ผ๋, count๋ 1๋ง ๋๋ค๋ ๊ฒ์ด๋ค. ๋ฐ๋ก ์ด๊ฑด ์ค๋ณต์ด ์๋๋ค๋ ์ฌ์ค! ๊ทธ๋ผ Array ๊ฐ ์๋๋ผ set์ผ๋ก ์ค์ ํ์ฌ ์ค๋ณต์ ์ ๊ฑฐํด์ค์ผํ๋ค. ๊ทธ๋์ reported_report ์ value๋ set์ผ๋ก ์ค์ ํ๋ค.
1. ์ ๋ ฅ๋ฐ์ ๊ฒ๋ค์ ๋ณ์๋ก ์ ๋ฆฌ
var reported_report: [String:Set<String>] = [:]
var idIdx:[String:Int] = [:]
var count = Array(repeating: 0, count: id_list.count)
2. report๋ฅผ ์ชผ๊ฐ์ ๊ฐ์์ ์์น์ dic์ ์ ์ฅ
for (i,id) in id_list.enumerated() {
idIdx[id] = i
}
for r in report {
let split = r.split(separator: " ")
let reported = String(split[1])
let report = String(split[0])
if reported_report[reported] == nil {
reported_report[reported] = [report]
} else {
reported_report[reported]!.insert(report)
}
}
3. ์ฃผ์ด์ง K์ ๋น๊ตํ์ฌ count
for r in reported_report {
if r.value.count >= k {
for i in r.value {
count[idIdx[i]!] += 1
}
}
}
์ต์ข ์ฝ๋
func solution(_ id_list:[String], _ report:[String], _ k:Int) -> [Int] {
var reported_report: [String:Set<String>] = [:]
var idIdx:[String:Int] = [:]
var count = Array(repeating: 0, count: id_list.count)
for (i,id) in id_list.enumerated() {
idIdx[id] = i
}
for r in report {
let split = r.split(separator: " ")
let reported = String(split[1])
let report = String(split[0])
if reported_report[reported] == nil {
reported_report[reported] = [report]
} else {
reported_report[reported]!.insert(report)
}
}
for r in reported_report {
if r.value.count >= k {
for i in r.value {
count[idIdx[i]!] += 1
}
}
}
return count
}
๋ฐ์ํ
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] (Swift) Kakao - ๋ฉ๋ด ๋ฆฌ๋ด์ผ (0) | 2022.05.12 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] (Swift) Kakao ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (0) | 2022.05.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Swift) Kakao ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์ (0) | 2022.04.28 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ด๋ถํ์ - ์ง๊ฒ๋ค๋ฆฌ (ํ์ด์ฌ) (2) | 2021.10.14 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌ๋ฐ๋ฅธ ๊ดํธ (level.2) (0) | 2021.10.13 |