์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๋ถํ ์ ๋ณต
- ๋ฐฑํธ๋ํน
- ๋ฐฑ์ค
- ์ฝํ
- dfs
- ์คํ
- ์์
- SwiftUI
- BFS
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฌธ์์ด
- ๋ถํ ์ ๋ณต
- dp
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ด์งํ์
- ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ
- ๋ธ๋ฃจํธํฌ์ค
- Swift
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- WebApp
- ๋ถํ ํ์
- ๋์ ํฉ
- ์ฝ๋ฉํ ์คํธ
- ios
- Queue
- ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
- ๋นํธ์ฐ์ฐ์
- WebView
- Today
- Total
MUKER_DEV with iOS
[swift] ํ๋ก๊ทธ๋๋จธ์ค - ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ ๋ณธ๋ฌธ
[swift] ํ๋ก๊ทธ๋๋จธ์ค - ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ
MUKER 2023. 2. 10. 23:11ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฌธ์ ํธ๋ ๋ฐ ์์ด ๋์์ด ๋๋๋ก ๋์ ํ์ด์ ๊ฐ์ ๋ ํ์ด๋ฅผ ์ฌ๋ฆฝ๋๋ค.
๋ํ ํ์ด ํ ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๊ณ ์ฐธ๊ณ ํ ๋งํ ํ์ด๋ ์ฌ๋ฆฝ๋๋ค.
- ๋ฌธ์ ์ ๋ฐ๋ผ ๋์ ํ์ด๋ง ์์ ์ ์์ต๋๋ค.
- ํด๋น ํ์ด๋ค์ ํ์ด ์ค ํ๋์ผ ๋ฟ ์ต์ ์ ํ์ด๋ ์๋ ์ ์์ต๋๋ค.
๋ฌธ์ ์ค๋ช
- id_list ์์๋๋ก ์ ์ง์ํจ Id์ ํ์๋ฅผ ๋ฆฌํดํด์ผ ํฉ๋๋ค.
- ์ค์ฒฉ๋๋ ์ ๊ณ ๋ ๋ฌดํจ์ ๋๋ค.
- k๋ฒ ์ ๊ณ ๋นํ๋ฉด ์์ด๋๊ฐ ์ ์ง๋ฉ๋๋ค.
- 10000ms์๊ฐ ์์ ๋ฌธ์ ๋ฅผ ํ ์ ์์ด์ผ ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ํ์ด(์คํจ)
import Foundation
func solution(_ id_list:[String], _ report:[String], _ k:Int) -> [Int] {
let reportArr = Set(report).map { $0.split(separator: " ").map { String($0) } }
var idDic = [String: [String]]()
var banDic = [String: Int]()
var result = Array(repeating: 0, count: id_list.count)
for i in reportArr {
idDic[i[0]] = (idDic[i[0]] ?? []) + [i[1]]
banDic[i[1]] = (banDic[i[1]] ?? 0) + 1
}
let ban = banDic.filter { $0.1 >= k }.keys
result = id_list.map { i in
var count = 0
for j in ban {
if let id = idDic[i] {
if id.contains(j) { count += 1 }
}
}
return count
}
return result
}
์ผ์ด์ค 3,21๋ฒ์ด ์๊ฐ์ ํ์ ๊ฑธ๋ ธ์ต๋๋ค.
id_list.map ๋ฐ๋ณต ์์์ ban์ ์ค์ฒฉ๋ฐ๋ณต ํ๋ ๊ฒ
์๊ฐ์ด๊ณผ์ ์์ธ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
๋ ๋ฒ์งธ ํ์ด(์ฑ๊ณต)
import Foundation
func solution(_ id_list:[String], _ report:[String], _ k:Int) -> [Int] {
var idDic = [String: [String]]()
var result = Array(repeating: 0, count: id_list.count)
for i in Set(report) {
let temp = i.split(separator: " ").map { String($0) }
idDic[temp[1]] = (idDic[temp[1]] ?? []) + [temp[0]]
}
let banDic = Dictionary(grouping: idDic.filter { $0.1.count >= k }.values.flatMap { $0 }) { $0 }
for i in id_list.enumerated() {
if banDic[i.element] != nil {
result[i.offset] = banDic[i.element]!.count
}
}
return result
}
์ต๋ํ ์ค์ฒฉ๋ฐ๋ณต์ ์์ ๊ณ ์ ๋ ธ๋ ฅํ์ต๋๋ค.
idDic์ key๊ฐ์๋ ์ ๊ณ ๋นํ ์ฌ๋์ ๋ฃ๊ณ
value๊ฐ์๋ ํด๋น key๋ฅผ ์ ๊ณ ํ ์ฌ๋์ ๋ฃ์์ต๋๋ค.
์๊ฐ์ ํ์ ์ค์๋ ํต์ฌ์
result๋ฅผ id_list์ count๋งํผ 0์ผ๋ก ์ฑ์ด ๋ฐฐ์ด๋ก ๋ง๋ค์ด ์คฌ๊ณ
id_list์ result๋ ์ ํํ index๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์
์ค์ฒฉ๋ฐ๋ณต ์์ด id_list๋ฅผ ํ์ํ๋ฉฐ
banDic์ ์๋ ์ ๊ณ ์ฑ๊ณต ํ์๋ฅผ
result์ ๋ฐ๋ก ์ด์ค ์ ์์์ต๋๋ค.
ํด๋น ํ์ด๋ ์๊ฐ์ ํ์ ๊ฑธ๋ ธ๋
์ผ์ด์ค 3,21๋ฒ ๋ชจ๋ 1000ms์์ผ๋ก ์ฑ๊ณตํ์ต๋๋ค.
'๐ค ์๊ณ ๋ฆฌ์ฆ > programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swift] ํ๋ก๊ทธ๋๋จธ์ค - ๊ฐ์ธ์ ๋ณด ์์ง ์ ํจ๊ธฐ๊ฐ (0) | 2023.02.14 |
---|---|
[swift] ํ๋ก๊ทธ๋๋จธ์ค - ์น์์ด (2) (0) | 2023.02.13 |
[swift] ํ๋ก๊ทธ๋๋จธ์ค - ์ซ์ ์ง๊ฟ (0) | 2023.02.09 |
[swift] ํ๋ก๊ทธ๋๋จธ์ค - ์ฒด์ก๋ณต (0) | 2023.02.07 |
[swift] ํ๋ก๊ทธ๋๋จธ์ค - ๋ช ์์ ์ ๋น (1) (0) | 2023.02.06 |