νλ‘κ·Έλλ¨Έμ€ - μμ₯(Swift)
νλ‘κ·Έλλ¨Έμ€ - μμ₯(Swift)
λ¬Έμ μ€λͺ
https://school.programmers.co.kr/learn/courses/30/lessons/42578
νλ‘κ·Έλλ¨Έμ€
μ½λ μ€μ¬μ κ°λ°μ μ±μ©. μ€ν κΈ°λ°μ ν¬μ§μ 맀μΉ. νλ‘κ·Έλλ¨Έμ€μ κ°λ°μ λ§μΆ€ν νλ‘νμ λ±λ‘νκ³ , λμ κΈ°μ κΆν©μ΄ μ λ§λ κΈ°μ λ€μ λ§€μΉ λ°μΌμΈμ.
programmers.co.kr
λμ νμ΄
λ€λ₯Έ μ·μ μ‘°ν©ν΄μ μ λ κ²½μ°μ μλ μΉ΄ν κ³ λ¦¬λ§λ€ μ΄ μΉ΄ν κ³ λ¦¬μ ν΄λΉνλ μμμ μ μ§ μλλ€μ κ²½μ°μ μ΄ μΉ΄ν κ³ λ¦¬μ λͺκ°μ μμμ΄ μλμ§λ§ κ³ λ €νλ©΄ λλ€.
μλ₯Όλ€μ΄ μμμλ 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
}