๐ ์ฝ๋ฉํ ์คํธ
โ๐ป Github
๋ฌธ์ ์ค๋ช
์ ์ ์ฌ์ ๋ฌด์ง๋ ๊ฒ์ํ ๋ถ๋ ์ด์ฉ์๋ฅผ ์ ๊ณ ํ๊ณ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ์ผ๋ก ๋ฐ์กํ๋ ์์คํ ์ ๊ฐ๋ฐํ๋ ค ํฉ๋๋ค. ๋ฌด์ง๊ฐ ๊ฐ๋ฐํ๋ ค๋ ์์คํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ฐ ์ ์ ๋ ํ ๋ฒ์ ํ ๋ช
์ ์ ์ ๋ฅผ ์ ๊ณ ํ ์ ์์ต๋๋ค.
- ์ ๊ณ ํ์์ ์ ํ์ ์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ์ ์ ๋ฅผ ๊ณ์ํด์ ์ ๊ณ ํ ์ ์์ต๋๋ค.
- ํ ์ ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ์๋ ์์ง๋ง, ๋์ผํ ์ ์ ์ ๋ํ ์ ๊ณ ํ์๋ 1ํ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
- k๋ฒ ์ด์ ์ ๊ณ ๋ ์ ์ ๋ ๊ฒ์ํ ์ด์ฉ์ด ์ ์ง๋๋ฉฐ, ํด๋น ์ ์ ๋ฅผ ์ ๊ณ ํ ๋ชจ๋ ์ ์ ์๊ฒ ์ ์ง ์ฌ์ค์ ๋ฉ์ผ๋ก ๋ฐ์กํฉ๋๋ค.
- ์ ์ ๊ฐ ์ ๊ณ ํ ๋ชจ๋ ๋ด์ฉ์ ์ทจํฉํ์ฌ ๋ง์ง๋ง์ ํ๊บผ๋ฒ์ ๊ฒ์ํ ์ด์ฉ ์ ์ง๋ฅผ ์ํค๋ฉด์ ์ ์ง ๋ฉ์ผ์ ๋ฐ์กํฉ๋๋ค.
๋ค์์ ์ ์ฒด ์ ์ ๋ชฉ๋ก์ด ["muzi", "frodo", "apeach", "neo"]์ด๊ณ , k = 2(์ฆ, 2๋ฒ ์ด์ ์ ๊ณ ๋นํ๋ฉด ์ด์ฉ ์ ์ง)์ธ ๊ฒฝ์ฐ์ ์์์ ๋๋ค.
์ ์ ID | ์ ์ ๊ฐ ์ ๊ณ ํ ID | ์ค๋ช |
"muzi" | "frodo" | "muzi"๊ฐ "frodo"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
"apeach" | "frodo" | "apeach"๊ฐ "frodo"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
"frodo" | "neo" | "frodo"๊ฐ "neo"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
"muzi" | "neo" | "muzi"๊ฐ "neo"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
"apeach" | "muzi" | "apeach"๊ฐ "muzi"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
๊ฐ ์ ์ ๋ณ๋ก ์ ๊ณ ๋นํ ํ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์ ID | ์ ๊ณ ๋นํ ํ์ |
"muzi" | 1 |
"frodo" | 2 |
"apeach" | 0 |
"neo" | 2 |
์ ์์์์๋ 2๋ฒ ์ด์ ์ ๊ณ ๋นํ "frodo"์ "neo"์ ๊ฒ์ํ ์ด์ฉ์ด ์ ์ง๋ฉ๋๋ค. ์ด๋, ๊ฐ ์ ์ ๋ณ๋ก ์ ๊ณ ํ ์์ด๋์ ์ ์ง๋ ์์ด๋๋ฅผ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์ ID | ์ ์ ๊ฐ ์ ๊ณ ํ ID | ์ ์ง๋ ID |
"muzi" | ["frodo", "neo"] | ["frodo", "neo"] |
"frodo" | ["neo"] | ["neo"] |
"apeach" | ["muzi", "frodo"] | ["frodo"] |
"neo" | ์์ | ์์ |
๋ฐ๋ผ์ "muzi"๋ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ 2ํ, "frodo"์ "apeach"๋ ๊ฐ๊ฐ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ 1ํ ๋ฐ๊ฒ ๋ฉ๋๋ค.
์ด์ฉ์์ ID๊ฐ ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด id_list, ๊ฐ ์ด์ฉ์๊ฐ ์ ๊ณ ํ ์ด์ฉ์์ ID ์ ๋ณด๊ฐ ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด report, ์ ์ง ๊ธฐ์ค์ด ๋๋ ์ ๊ณ ํ์ k๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ ์ ์ ๋ณ๋ก ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ ๋ฐ์ ํ์๋ฅผ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- 2 ≤ id_list์ ๊ธธ์ด ≤ 1,000
- 1 ≤ id_list์ ์์ ๊ธธ์ด ≤ 10
- id_list์ ์์๋ ์ด์ฉ์์ id๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด์ด๋ฉฐ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- id_list์๋ ๊ฐ์ ์์ด๋๊ฐ ์ค๋ณตํด์ ๋ค์ด์์ง ์์ต๋๋ค.
- 1 ≤ report์ ๊ธธ์ด ≤ 200,000
- 3 ≤ report์ ์์ ๊ธธ์ด ≤ 21
- report์ ์์๋ "์ด์ฉ์id ์ ๊ณ ํid"ํํ์ ๋ฌธ์์ด์ ๋๋ค.
- ์๋ฅผ ๋ค์ด "muzi frodo"์ ๊ฒฝ์ฐ "muzi"๊ฐ "frodo"๋ฅผ ์ ๊ณ ํ๋ค๋ ์๋ฏธ์ ๋๋ค.
- id๋ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์ด์ฉ์id์ ์ ๊ณ ํid๋ ๊ณต๋ฐฑ(์คํ์ด์ค)ํ๋๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค.
- ์๊ธฐ ์์ ์ ์ ๊ณ ํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
- 1 ≤ k ≤ 200, k๋ ์์ฐ์์ ๋๋ค.
- return ํ๋ ๋ฐฐ์ด์ id_list์ ๋ด๊ธด id ์์๋๋ก ๊ฐ ์ ์ ๊ฐ ๋ฐ์ ๊ฒฐ๊ณผ ๋ฉ์ผ ์๋ฅผ ๋ด์ผ๋ฉด ๋ฉ๋๋ค.
์ ์ถ๋ ฅ ์
id_list | report | k | result |
["muzi", "frodo", "apeach", "neo"] | ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"] | 2 | [2,1,1,0] |
["con", "ryan"] | ["ryan con", "ryan con", "ryan con", "ryan con"] | 3 | [0,0] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
"ryan"์ด "con"์ 4๋ฒ ์ ๊ณ ํ์ผ๋, ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ฐ๋ผ ํ ์ ์ ๊ฐ ๊ฐ์ ์ ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ๊ฒฝ์ฐ๋ ์ ๊ณ ํ์ 1ํ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ๋ฐ๋ผ์ "con"์ 1ํ ์ ๊ณ ๋นํ์ต๋๋ค. 3๋ฒ ์ด์ ์ ๊ณ ๋นํ ์ด์ฉ์๋ ์์ผ๋ฉฐ, "con"๊ณผ "ryan"์ ๊ฒฐ๊ณผ ๋ฉ์ผ์ ๋ฐ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ [0, 0]์ return ํฉ๋๋ค.
๋ฌธ์ ํ์ด
๋์ ํ์ด
์ ๋ต๋ฅ 91.7 -> ์คํจ
import Foundation
func solution(_ id_list:[String], _ report:[String], _ k:Int) -> [Int] {
// ๋ ํฌํธ๋ฅผ array๋ก ์ ์ฅ
var reportArray = [[String]]()
// ์ ๊ณ ๋ฐ์ ํ์ ์ ์ฅ
var reportedUserDict = [String: Int]()
// ์ ์ ์ ๋ฐ๋ฅธ ๋ฉ์ผ์ ๋ฐ์ ํ์ ์ ์ฅ
var emailedUser = [Int](repeating: 0, count: id_list.count)
var i = 0
for re in Set(report) {
reportArray.append(re.split(separator: " ").map{ String($0) })
let reported = String(reportArray[i][1])
i += 1
if reportedUserDict[reported] == nil {
reportedUserDict[reported] = 1
}else {
reportedUserDict[reported]! += 1
}
}
// ์ ๊ณ ๋นํ ์ ์
let reportedUser = reportedUserDict.filter{ $1 >= k }.map{ $0.key }
if reportedUser.isEmpty { return emailedUser }
for a in reportArray{
if reportedUser.contains(a[1]) {
emailedUser[id_list.firstIndex(of: a[0])!] += 1
}
}
return emailedUser
}
์ฐ์ ๋ด๊ฐ ์๊ฐํ ํ์ด๊ณผ์ ์ ์ ๊ณ ๋นํ ์ ์ ์ค ์ ๊ณ ํ์๊ฐ k๊ฐ๊ฐ ๋๋ ์ ์ ๋ฅผ ๊ตฌํ์ฌ ๊ทธ ์ ์ ๋ฅผ ์ ๊ณ ํ ์ ์ ๋ฅผ ์ฐพ์ ๋ฐฐ์ด์ ๊ฐฏ์๋ฅผ ์ฌ๋ฆฌ๋ฉด ๋๋ค๊ณ ์๊ฐํ๋ค. ํ์ง๋ง ์๊ฐ๋งํผ์ด๋ ์ฝ์ง ์์๋ค. ์ ๊ณ ํ์๊ฐ ์ ํ์๋ Report์ ์ต๋๊ฐ์ด 200,000 ์ด์๊ณ , id_list์ ์ต๋๊ฐ์ด 1,000์ด๊ธฐ ๋๋ฌธ์ 3๋ฒ๊ณผ 21๋ฒ์์์ ์๊ฐ์ด๊ณผ๋ฅผ ํผํ ์ ์์๋ค.
ํ
์คํธ 1 ใ ํต๊ณผ (0.13ms, 16.4MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.20ms, 16.5MB)
ํ
์คํธ 3 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 4 ใ ํต๊ณผ (0.29ms, 16.2MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.31ms, 16.6MB)
ํ
์คํธ 6 ใ ํต๊ณผ (6.46ms, 16.6MB)
ํ
์คํธ 7 ใ ํต๊ณผ (13.79ms, 16.8MB)
ํ
์คํธ 8 ใ ํต๊ณผ (21.19ms, 16.9MB)
ํ
์คํธ 9 ใ ํต๊ณผ (4654.00ms, 31.8MB)
ํ
์คํธ 10 ใ ํต๊ณผ (350.81ms, 31.6MB)
ํ
์คํธ 11 ใ ํต๊ณผ (8415.67ms, 50.1MB)
ํ
์คํธ 12 ใ ํต๊ณผ (5.46ms, 16.4MB)
ํ
์คํธ 13 ใ ํต๊ณผ (1.61ms, 16.5MB)
ํ
์คํธ 14 ใ ํต๊ณผ (6474.66ms, 30.2MB)
ํ
์คํธ 15 ใ ํต๊ณผ (613.91ms, 42MB)
ํ
์คํธ 16 ใ ํต๊ณผ (1.55ms, 16.7MB)
ํ
์คํธ 17 ใ ํต๊ณผ (1.38ms, 16.4MB)
ํ
์คํธ 18 ใ ํต๊ณผ (7.80ms, 16.5MB)
ํ
์คํธ 19 ใ ํต๊ณผ (30.51ms, 16.5MB)
ํ
์คํธ 20 ใ ํต๊ณผ (6781.54ms, 30.4MB)
ํ
์คํธ 21 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 22 ใ ํต๊ณผ (0.10ms, 16.1MB)
ํ
์คํธ 23 ใ ํต๊ณผ (0.11ms, 16.3MB)
ํ
์คํธ 24 ใ ํต๊ณผ (0.09ms, 16.2MB)
๋ด๊ฐ ์๊ฐ์ด๊ณผ๊ฐ ๋ ์ด์ ๋ฅผ ๋ ์์ธํ๊ฒ ๋ฏ์ด๋ณด์. ๊ทธ๋์ผ ๋ค์์๋ ๋๊ฐ์ ์ค์๋ฅผ ๋ฐ๋ณตํ์ง ์์ผ๋๊น.
๋๋ " ํ ์ ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ์๋ ์์ง๋ง, ๋์ผํ ์ ์ ์ ๋ํ ์ ๊ณ ํ์๋ 1ํ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. " ๋ผ๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฐ์ ์ค๋ณต๋๋ report ๊ฐ์ Set ๋ก ํ๋ฒ ๊ฐ์ธ์ ์ค๋ณต์ ์์ ์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ฌ ์ ๊ณ ๋ฐ์ ์ ์ ์ ์ ๊ณ ํ ์ ์ ๊ฐ ํ ๋ฌธ์์ด๋ก ์ ์ธ์ด ๋์ด์์ผ๋ ์ด๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ฐ์ ์์นํ๊ธฐ ํธํ๊ฒ ๋ฐ๊พธ์ด์ผ ํ๋ค. report๋ฅผ ํ ๋ฒ์ ๋์์ผ๋ง ํ๋ค๊ณ ํ๋จํ์ฌ for๋ฌธ์ ๋๋ฆด ๋, ์ ๊ณ ๋ฐ์ ์ ์ ๋ง ๋ฐ๋ก ๋์ ๋๋ฆฌ์ ์ ์ฅํ์ฌ ๋์ ๋๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธ ํด์ฃผ์๊ณ , ์ ๊ณ ํ ์ ์ ์ ์ ๊ณ ๋ฐ์ ์ ์ ๋ฅผ ๋์ ๋๋ฆฌ๋ก ์ ์ธํ๊ณ ์ถ์์ง๋ง, ํค ๊ฐ์ด ์ค๋ณต๋ ์๋ ์์ผ๋ ์ด์ฉ ์ ์์ด ์ด์ค๋ฐฐ์ด๋ก ์ ์ธํ๊ฒ ๋์๋ค. ์ฌ๊ธฐ์ ์ด๋ฏธ ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค. ์ ๊ณ ํ ์ ์ ์ ์ ๊ณ ๋ฐ์ ์ ์ ๋ฅผ ๋ฐฐ์ด๋ก ์ ์ธํ ์๊ฐ ์ ๊ณ ๋ฐ์ ์ ์ ๋ฅผ ์์นํด์ ์ ๊ณ ํ ์ ์ ๋ฅผ ์ฐพ๋ ๊ณผ์ ์์ ์ต๋ O(200,000)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค. ์์ report๋ฅผ ํ๋ฒ ์กฐ์ฌํ ๋, O(200,000)๋ฒ์ ์ฌ์ฉํ์๊ธฐ ๋๋ฌธ์ ์ต๋ ์๊ฐ ๋ณต์ก๋๋ O(400,000)์ด ๋์ด ๋ฒ๋ฆฌ๋ ๊ฒ์ด๋ค. ๊ฑฐ๊ธฐ๋ค๊ฐ + ์ ๊ณ ๋นํ ์ ์ ๊ฐ k๊ฐ ๋๋ ๊ฐ์์ ์กฐ์ฌํ๊ธฐ ์ํด์ ๋ filter์ map์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๋ ๊ทธ ์ด์์ด ๋์ด๋ฒ๋ฆฐ๋ค.
๋ด๊ฐ ๋์น ๋ถ๋ถ์ ๋ฐ๋ก ์ฌ๊ธฐ ์ ๊ณ ํ ์ ์ ์ ์ ๊ณ ๋ฐ์ ์ ์ ๋ฅผ ์ด์ค๋ฐฐ์ด๋ก ์ ์ธํ ๋ถ๋ถ! 1์๊ฐ ๋๊ฒ ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ชป์ฐพ์ ํํธ๋ฅผ ์ฐพ์ ๋์ฐ๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ด์ค ๋ฐฐ์ด์ด ์๋ ๋์ ๋๋ฆฌ์ ๋ฃ์ด์ผ ํ๋ค. [String: [String]] ์ด๋ ๊ฒ ๋์ ๋๋ฆฌ๋ฅผ ์ ์ธํ ์ ์๋ค๋ ์ฌ์ค์ ๋ง๊ฐ. ์๋ ๋ชฐ๋๋ ๊ฒ์ด๋ค. ์ด ๋ฌธ์ ์ ์์ ์ ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ์์น ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์๋๋ฅผ ๋ฌป๋ ๋ฌธ์ ์๋ค. ๋์ ๋๋ฆฌ์ ๋ํ ๋ ๋ง์ ๊ณต๋ถ์ ๋ ๋ง์ ๋ฌธ์ ํ์ด๊ฐ ํ์ํ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ๊ทธ ํํธ๋ฅผ ์ป์ด ๋ค์ ํ์ด๋๊ฐ๋ค.
์ ๋ต๋ฅ 100 -> ์ฑ๊ณต!
import Foundation
func solution(_ id_list:[String], _ report:[String], _ k:Int) -> [Int] {
// ๋ ํฌํธ๋ฅผ array๋ก ์ ์ฅ
var reportDic = [String:[String]]()
// ์ ๊ณ ๋ฐ์ ํ์ ์ ์ฅ
var reportedUserDict = [String:Int]()
for str in Set(report) {
var reportArr = str.split(separator: " ").map{ String($0) }
// ์ ๊ณ ๋ฐ์ ์ ์ ๋ง reportedUserDict์ ์ ์ฅ
reportedUserDict[reportArr[1]] = (reportedUserDict[reportArr[1]] ?? 0) + 1
// ๋ ํฌํธ์ ๋ด์ฉ์ reportDic์ ์ ์ฅ
reportDic[reportArr[0]] = (reportDic[reportArr[0]] ?? []) + [reportArr[1]]
}
// ์ ๊ณ ๋ฐ์ ์ ์ ์ ์ ๊ณ ํ์๊ฐ k๊ฐ ๋๋ ์ ์ ๋ง ๋จ๊ธฐ๊ธฐ
reportedUserDict.forEach{
if $0.value < k {
reportedUserDict[$0.key] = nil
}
}
return id_list.map { id in
(reportDic[id] ?? []).filter{
reportedUserDict.keys.contains($0)
}.count
}
}
๋์ ๋๋ฆฌ์ value ๊ฐ์ ์ ๋ฐ์ดํธํ๊ฑฐ๋ value ๊ฐ์ ์ป์ด์ฌ ๋๋ ์ต์ ๋ ๊ฐ์ผ๋ก ๊ฐ์ธ์ ธ ์์ด ์ธ๋ํ์ด ํ์ํ๋ค ์ด๋๊น์ง๋ if๋ฌธ์ด๋ guard let ์ผ๋ก ๋์ ๋๋ฆฌ์ ๊ฐ์ ์ธ๋ํ ํ์๋๋ฐ, ์ด๋ฒ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ?? ๋ฅผ ์จ์ ๋ฐ์ธ๋ฉํ๋ฉด ํจ์ฌ ํธํ๊ฒ ๊ฐ์ ์ ๋ฐ์ดํธ ํ๊ฑฐ๋ ์ฆ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฐ๊ฑฐ๋ ๊ฐ์ ๋นผ์ฌ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค. ๋ด์ผ ํ๋ฒ๋ ํ์ด๋ณด๋ฉด์ ๋์ ๋๋ฆฌ์ ๋ํ ๋ณต์ต์ ์งํํด๋ ์ข์ ๊ฒ ๊ฐ๋ค.
ํ
์คํธ 1 ใ ํต๊ณผ (0.15ms, 16.4MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.23ms, 16.5MB)
ํ
์คํธ 3 ใ ํต๊ณผ (1034.26ms, 39.8MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.32ms, 16.5MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.33ms, 16.6MB)
ํ
์คํธ 6 ใ ํต๊ณผ (11.91ms, 16.7MB)
ํ
์คํธ 7 ใ ํต๊ณผ (19.24ms, 17MB)
ํ
์คํธ 8 ใ ํต๊ณผ (14.18ms, 17.1MB)
ํ
์คํธ 9 ใ ํต๊ณผ (533.04ms, 27.1MB)
ํ
์คํธ 10 ใ ํต๊ณผ (577.07ms, 26.7MB)
ํ
์คํธ 11 ใ ํต๊ณผ (1104.82ms, 39.1MB)
ํ
์คํธ 12 ใ ํต๊ณผ (2.54ms, 16.8MB)
ํ
์คํธ 13 ใ ํต๊ณผ (1.43ms, 16.4MB)
ํ
์คํธ 14 ใ ํต๊ณผ (338.69ms, 26.5MB)
ํ
์คํธ 15 ใ ํต๊ณผ (542.44ms, 37.9MB)
ํ
์คํธ 16 ใ ํต๊ณผ (2.12ms, 16.7MB)
ํ
์คํธ 17 ใ ํต๊ณผ (1.32ms, 16.3MB)
ํ
์คํธ 18 ใ ํต๊ณผ (2.40ms, 16.6MB)
ํ
์คํธ 19 ใ ํต๊ณผ (7.45ms, 16.5MB)
ํ
์คํธ 20 ใ ํต๊ณผ (318.61ms, 26.6MB)
ํ
์คํธ 21 ใ ํต๊ณผ (513.44ms, 37.4MB)
ํ
์คํธ 22 ใ ํต๊ณผ (0.12ms, 16.3MB)
ํ
์คํธ 23 ใ ํต๊ณผ (0.13ms, 16.4MB)
ํ
์คํธ 24 ใ ํต๊ณผ (0.13ms, 16.6MB)
๋ค๋ฅธ ์ฌ๋ ํ์ด
import Foundation
func solution(_ id_list:[String], _ report:[String], _ k:Int) -> [Int] {
// ๋ ํฌํธ๋ฅผ Dict๋ก ์ ์ฅ
var reportDict = [String: [String]]()
// ์ ๊ณ ๋ฐ์ ํ์ ์ ์ฅ
var reportedUserDict = [String: Int]()
for str in Set(report){
let array = str.split(separator: " ").map{ String($0) }
reportDict[array[0]] = (reportDict[array[0]] ?? []) + [array[1]]
reportedUserDict[array[1]] = (reportedUserDict[array[1]] ?? 0) + 1
}
return id_list.map{ id in
return (reportDict[id] ?? []).reduce(0) {
$0 + ((reportedUserDict[$1] ?? 0 ) >= k ? 1 : 0)
}
}
}
๊ฐํ.. ๊ทธ ์์ฒด.. ๋์ ํ์ด์ ๋ฌ๋ฆฌ k๊ฐ๋ณด๋ค ํฐ ์ ์ธ๊ฒ์ ๋ฐ๋ก ์์ ์ง ์๊ณ , ๊ฐ์ ๋ํ๋ฉด์ ๋ฐ๋ก ๋น๊ต๋ฅผ ํ์๋ค. ์ด ๋ ์ผํญ์ฐ์ฐ์์ reduce๋ฅผ ์ฌ์ฉํ ์์ฃผ ์ ๋ฐํ ํ์ด ๋ฐฉ๋ฒ์ด๋ค.. ๋ณธ๋ฐ์์ผ ๊ฒ ๋ค.
๊ทผ๋ฐ.. ๋ด ์ฝ๋๊ฐ ๋ ๋น ๋ฅด๋ค..? ์? filter๋ณด๋ค reduce ์๊ฐ์ด ๋ ๋๋ ค์ ๊ทธ๋ฐ๊ฒ ๊ฐ๊ธฐ๋..!
ํ
์คํธ 1 ใ ํต๊ณผ (0.18ms, 16.4MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.20ms, 16.2MB)
ํ
์คํธ 3 ใ ํต๊ณผ (1111.91ms, 39.4MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.25ms, 16.5MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.30ms, 16.6MB)
ํ
์คํธ 6 ใ ํต๊ณผ (6.56ms, 16.7MB)
ํ
์คํธ 7 ใ ํต๊ณผ (10.03ms, 17MB)
ํ
์คํธ 8 ใ ํต๊ณผ (12.03ms, 17.2MB)
ํ
์คํธ 9 ใ ํต๊ณผ (414.53ms, 27.1MB)
ํ
์คํธ 10 ใ ํต๊ณผ (472.88ms, 27.1MB)
ํ
์คํธ 11 ใ ํต๊ณผ (1271.84ms, 39.4MB)
ํ
์คํธ 12 ใ ํต๊ณผ (2.10ms, 16.7MB)
ํ
์คํธ 13 ใ ํต๊ณผ (1.30ms, 16.4MB)
ํ
์คํธ 14 ใ ํต๊ณผ (295.75ms, 26.6MB)
ํ
์คํธ 15 ใ ํต๊ณผ (625.43ms, 38MB)
ํ
์คํธ 16 ใ ํต๊ณผ (0.93ms, 16.2MB)
ํ
์คํธ 17 ใ ํต๊ณผ (2.48ms, 16.6MB)
ํ
์คํธ 18 ใ ํต๊ณผ (2.22ms, 16.6MB)
ํ
์คํธ 19 ใ ํต๊ณผ (6.10ms, 16.7MB)
ํ
์คํธ 20 ใ ํต๊ณผ (492.23ms, 26.5MB)
ํ
์คํธ 21 ใ ํต๊ณผ (549.28ms, 37.6MB)
ํ
์คํธ 22 ใ ํต๊ณผ (0.09ms, 16.3MB)
ํ
์คํธ 23 ใ ํต๊ณผ (0.09ms, 16.4MB)
ํ
์คํธ 24 ใ ํต๊ณผ (0.14ms, 16.3MB)
์ค์ํ ๊ฐ๋
- ๋์ ๋๋ฆฌ์๋ ๋ฐฐ์ด๋ ๋ค์ด๊ฐ ์ ์์
- ์์น ๋ฌธ์ ์์๋ ๋์ ๋๋ฆฌ๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ์ฌ ์๊ฐ ๋ณต์ก๋ ์ค์ด๊ธฐ
- ๋์ ๋๋ฆฌ์ ์ธ๋ํ ๊ณผ์ ์์ ?? ์ธ๋ํ์ ํ๋ฉด ์ข ๋ ๊ฐ๊ฒฐํ๊ฒ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ
- reduce ์ ์ผํญ ์ฐ์ฐ์ ์กฐํฉํด์ ๋์ ๋๋ฆฌ ํํฐ๋ง ํ๋ ์ฐ์ตํ๊ธฐ
์๋ ์ด๊ฒ ๋ฌด์จ Lv.1 ์ง๋ฆฌ์ผ.. ๋ ์ธ์ด..ใ ใ ใ ๊ด๊ด
์ค์ ๋ก๋ 2022๋ ์นด์นด์ค ์ฝํ ์ํ์์ 1๋ฒ์ผ๋ก ์ถ์ ๋ ๋ฌธ์ ๋ผ๊ณ ํ๋ค. ๊ทธ ์๋ฆฌ์ ์์์ผ๋ฉด ๊ทธ๋ฅ ๋ฉํ ํฐ์ก์ ๋ฏ..
๊ทธ๋๋ ์ค๋๋ ์ฑ์ฅํ ๋ ๋ฟ๋ฏ^__^ ์ด์ ๋์ ๋๋ฆฌ ๋ฌธ์ ๋ค ๋ฟ์ค ์ ์์ ๋ฏ.. ๋๋ฃจ์!!!!