2022. 10. 14. 10:00ใํ๋ก๊ทธ๋๋จธ์ค-Swift
ํ๋ก๊ทธ๋๋จธ์ค - ์์ฅ(Swift)
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/42578
๋์ ํ์ด
๋ค๋ฅธ ์ท์ ์กฐํฉํด์ ์ ๋ ๊ฒฝ์ฐ์ ์๋ ์นดํ ๊ณ ๋ฆฌ๋ง๋ค ์ด ์นดํ ๊ณ ๋ฆฌ์ ํด๋นํ๋ ์์์ ์ ์ง ์๋๋ค์ ๊ฒฝ์ฐ์ ์ด ์นดํ ๊ณ ๋ฆฌ์ ๋ช๊ฐ์ ์์์ด ์๋์ง๋ง ๊ณ ๋ คํ๋ฉด ๋๋ค.
์๋ฅผ๋ค์ด ์์์๋ 2๋ฒ, ํ์์๋ 3๋ฒ์ด ์์๋ ์์๋ฅผ ์์ ์ ์ ๊ฑฐ๋ 1๋ฒ ํน์ 2๋ฒ์ ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ -> 3, ํ์๋ฅผ ์์ ์ ์ ๊ฑฐ๋ 1๋ฒ ํน์ 2๋ฒ ํน์ 3๋ฒ์ ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ -> 4ํด์ ์ด 12๊ฐ์ง ๊ฒฝ์ฐ์ ์๊ฐ ๋์จ๋ค. ์ฌ๊ธฐ์ ํ ๊ฐ์ง๋ ๊ผญ ์ ์ด์ผํ๋ ์กฐ๊ฑด์ด ์์ผ๋ -1๋ง ํด์ฃผ๋ฉด ๋๋ค.
import Foundation
func solution(_ clothes:[[String]]) -> Int {
var dic: [String: Int] = [:]
for cloth in clothes {
if dic[cloth[1]] == nil {
dic[cloth[1]] = 1
} else {
dic[cloth[1]]! += 1
}
}
var result = 1
for x in dic {
result *= (x.1+1)
}
return result-1
}
๋ค๋ฅธ ์ฌ๋์ ํ์ด
compactMap, Set, reduce๋ฅผ ์ ์ ํ ์ฌ์ฉํ ํ์ด์ด๋ค.
compactMap์ ๋ณดํต์ 2์ฐจ์๋ฐฐ์ด์์ ์ฌ์ฉํ๋ฉด 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ฆฌํด์ ํ์ง๋ง ์๋ ์ฝ๋์ฒ๋ผ $0.last!๋ก ํ ๊ฐ์ ์ซ์๋ง ๋ฆฌํดํ๊ฒ ๋๋ค๋ฉด 1์ฐจ์ ๋ฐฐ์ด๋ก ๋ฆฌํดํ๊ฒ ๋๋ค. (์์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ํน์ ์๊ณ ๊ณ์๋ฉด ๋๊ธ ๋ถํ๋๋ ค์!)
๊ทธ๋ฆฌ๊ณ ๊ณ ์ฐจํจ์๋ฅผ ์ธ๋ ์ด๋ ํ์ด๋ฐ์ filter๋ฅผ ์ฐ๊ณ reduce๋ฅผ ์จ์ผํ ์ง ํท๊ฐ๋ฆด ์ ์๋๋ฐ ํญ์ "๋ด๊ฐ ๋ฌด์์ ๋ง๋๋๊ฐ"์ ์ง์คํ๋ฉด ๋๋ค.
์๋ ์์์์๋ ๊ฐ๊ฐ ์์์ ์ข ๋ฅ์ ๋ฐ๋ผ ์นด์ดํธ๋ฅผ ๋์ ์ํค๊ณ ์ถ์๊ธฐ ๋๋ฌธ์ catories๋ฅผ ๋งคํํ๊ณ clothes๋ฅผ ์ ๋ถ ๋๋ฉด์ ํด๋นํ๋ ๊ฒ์ filter -> countํ๋ค.
import Foundation
func solution(_ clothes:[[String]]) -> Int {
let types = clothes.compactMap{ $0.last! }
let setType = Set(types)
let categories = Array(setType)
let counts = categories.map { category in
return clothes.filter{ $0.last! == category }.count + 1
}
return counts.reduce(1, {$0 * $1}) - 1
}
ํผ๋๋ฐฑ
๋์ ๋๋ฆฌ๋ฅผ for๋ฌธ์ผ๋ก ์ ๊ทผํ ๋ ํํ์ฒ๋ผ .์ฐ์ฐ์๋ก key๋ value์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
let dic: [String: Int] = ["a": 1, "b": 2]
for x in dic {
print(x.1 terminator:" ") // output: 1 2
}
'ํ๋ก๊ทธ๋๋จธ์ค-Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ฆฐํฐ(Swift) (0) | 2022.10.14 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ๊ธฐ๋ฅ๊ฐ๋ฐ(Swift) (0) | 2022.10.14 |
ํ๋ก๊ทธ๋๋จธ์ค - n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ (0) | 2022.10.13 |
ํ๋ก๊ทธ๋๋จธ์ค - ํํ(Swift) (0) | 2022.10.12 |
ํ๋ก๊ทธ๋๋จธ์ค - ๊ดํธ ํ์ ํ๊ธฐ (0) | 2022.10.12 |