[Swift] νλ‘κ·Έλλ¨Έμ€ Lv.1 : κ³ μ°¨ν¨μ μ°μ΅
Swift μΈμ΄λ‘ μκ³ λ¦¬μ¦ λ¬Έμ λ₯Ό ν λ κ³ μ°¨ν¨μλ₯Ό μ΄μ©νλ©΄ κ°λ¨νκ² νμ΄ν μ μλ€.
λ΄κ° νΌ νμ΄μμ 1μ€μ§λ¦¬ μ½λκ° λλ κ±Έ 보며 κ³ μ°¨ν¨μμ μ‘°κΈ λ μ΅μν΄μ§κ³ μ°μ΅ν΄μΌκ² λ€λ μκ°μ΄ μ μ€ν λ€μλ€.
μ€λ νμλ μκ³ λ¦¬μ¦ λ¬Έμ λ€μ κ³ μ°¨ν¨μλ‘λ μ°μ΅ν΄ λ³Έ μ½λλ₯Ό μ λ¦¬ν΄ λ΄€λ€.
Lv.1 : μλ°μλ°μλ°μλ°μλ°μ?
λμ νμ΄
func solution(_ n:Int) -> String {
let su = "μ"
let bak = "λ°"
var result = ""
for i in 1...n {
result += i % 2 == 0 ? bak : su
}
return result
}
forλ¬ΈμΌλ‘ 1λΆν° nκΉμ§μ λ²μλ₯Ό λ°λ³΅νλ©° μ§μ, νμλ₯Ό νλ³νμ¬ "μ"μ "λ°"μ μ΄μ΄ λΆμ΄λλ‘ μμ±νλ€.
λ€λ₯Έ μ¬λμ νμ΄
func solution1(_ n:Int) -> String {
return "\(String(repeating: "μλ°", count: n / 2))\(n % 2 == 0 ? "" : "μ")"
}
func solution2(_ n:Int) -> String {
return (0..<n).map{($0%2==0 ? "μ" : "λ°")}.reduce("",+)
}
- 1. String(repeating:count:) λ©μλ μ¬μ©
repeating : "μλ°" → "μλ°" λ¬Έμμ΄ λ°λ³΅
count: n/2 → λ°λ³΅ νμ μ€μ
μ£Όμ΄μ§ μ«μκ° νμμΌ λλ "μλ°" ν¨ν΄μ n/2λ² λ°λ³΅νκ³ , μ§μμΌ λλ "μλ°" ν¨ν΄μ n/2λ² λ°λ³΅ν λ€μ "μ"λ₯Ό μΆκ°νλ λ°©λ²μ΄λ€. repeatingμ μ¬μ©νμ¬ κ°λ¨νκ² λ°λ³΅νμ¬ μ¬μ©ν μ μλ€.
- 2. κ³ μ°¨ν¨μ map, reduce μ¬μ©
.map{($0%2==0 ? "μ" : "λ°")} → nν λ°λ³΅νλ λ²μμμ κ° μμκ° μ§μμΈμ§ νμμΈμ§ νλ³νμ¬ "μ", "λ°"μΌλ‘ λ§€ν
.reduce("", +) → μμ±λ λ°°μ΄μ λͺ¨λ μμλ₯Ό μ΄μ΄ λΆμ¬ νλμ λ¬Έμμ΄λ‘ λ°ν
Lv.1 : λ΄μ
λμ νμ΄
// a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] nμ a,b λ°°μ΄μ κΈΈμ΄
func solution(_ a:[Int], _ b:[Int]) -> Int {
let n = a.count
var result = 0
for i in 0..<n {
result += a[i] * b[i]
}
return result
}
λ°λ³΅λ¬ΈμΌλ‘ λ°°μ΄μ κΈΈμ΄λ§νΌ μμλ₯Ό λ°λ³΅νκ³ ,
κ° λ°°μ΄μ κ°μ μμΉμ μλ μμλ₯Ό κ³±νμ¬ ν©μ°νλ€.
λ€λ₯Έ μ¬λμ νμ΄π‘
func solution1(_ a:[Int], _ b:[Int]) -> Int {
return zip(a, b).map(*).reduce(0, +)
}
- zip ν¨μ : μ£Όμ΄μ§ λ λ°°μ΄μ κ° μμλ₯Ό ν μμΌλ‘ λ¬Άμ΄μ£Όλ μν
- map(*) : κ° μνμ€μ μμλ₯Ό κ³±νλ μν → (1,4)λ 1*4
- reduce(0, +) : μ΄μ κΉμ§μ ν©μ° κ°μ μ΄κΈ°κ°μΌλ‘ μ€μ νκ³ κ° μμλ₯Ό λνμ¬ μλ‘μ΄ κ° λ°ν
λ°λΌμ mapμΌλ‘ μμ±λ λ°°μ΄μ λͺ¨λ μμλ₯Ό ν©μ°νμ¬ λ°ννλ€.
μ΄λ κ² λ¨μνκ² μ ννκ² μμ±ν μ μλ€λ.. π«’
Lv.1 : μ½μμ ν©
λμ νμ΄
func solution(_ n:Int) -> Int {
var result = 0
guard n > 0 else { return result }
for i in 1...n {
if n % i == 0 {
result += i
}
}
return result
}
λ°λ³΅λ¬Έμ μ¬μ©νμ¬ nμ μ½μλ₯Ό μ°Ύκ³ , μ°Ύμ μ½μλ₯Ό λνμ¬ κ²°κ³Όλ₯Ό λ°ννλ€.
λ€λ₯Έ μ¬λμ νμ΄
func solution(_ n:Int) -> Int {
return Array(1...n).filter{n % $0 == 0}.reduce(0, +)
}
- Array(1...n) : 1λΆν° nκΉμ§μ λ°°μ΄μ μμ±
- .filter { n % $0 == 0 } : λ°°μ΄ μ€μμ λλμμ λ λλ¨Έμ§κ° 0μΈ μμλ€ νν°λ§νμ¬ μλ‘μ΄ λ°°μ΄μ μμ±,$0μ λ°°μ΄μ κ° μμμ΄λ€.
- .reduce(0, +) : νν°λ§λ λ°°μ΄μ μμλ€μ λͺ¨λ ν©νμ¬ κ²°κ³Όλ₯Ό λ°ν
Lv.1 : λλ¨Έμ§κ° 1μ΄ λλ μ μ°ΎκΈ°
λμ νμ΄
func reminder(_ n:Int) -> Int {
return Array(1...n).filter{n % $0 == 1}.first! // min()
}
쑰건μ λ§λ μμλ₯Ό λͺ¨λ νν°λ§νλ€λ μ μ΄ μμ½κΈ΄ νμ§λ§ κ³ μ°¨ν¨μλ₯Ό μ΄μ©ν΄μ λ¬Έμ μ μ κ·Όν΄ λ΄€λ€.
1λΆν° nκΉμ§μ μ«μ μ€μμ nμ λλμμ λ λλ¨Έμ§κ° 1μΈ μ μ€μμ κ°μ₯ μμ μλ₯Ό μ°Ύμ λ°ννλ€.
Lv.1 : Xλ§νΌ κ°κ²©μ΄ μλ nκ°μ μ«μ
λμ νμ΄
func solution(_ x:Int, _ n:Int) -> [Int64] {
// x λΆν° xλ§νΌ μ¦κ° nκ°
var numbers: [Int64] = []
for i in 1...n {
numbers.append(Int64(x*i))
}
return numbers
}
1λΆν° nκΉμ§μ μλ₯Ό λ°λ³΅νλ©΄μ xμ iλ₯Ό κ³±ν κ°μ numbers λ°°μ΄μ μΆκ°νλ λ°©λ²μΌλ‘ νμλ€.
μ΄λ κ² νλ©΄ xλΆν° μμνμ¬ xλ§νΌ μ¦κ°νλ μ«μκ° nκ° λ§λ€μ΄μ§λ€.
λ€λ₯Έ μ¬λμ νμ΄π‘
func solution(_ x:Int, _ n:Int) -> [Int64] {
return Array(1...n).map { Int64($0 * x) }
}
1λΆν° nκΉμ§μ μ«μ λ°°μ΄μ μμ±ν ν,
λ°°μ΄μ κ° μμμ xλ₯Ό κ³±ν κ°μ Int64 νμ μΌλ‘ λ³ννμ¬ μλ‘μ΄ λ°°μ΄μ λ°ννλ€.
μ§κΈ 보λ μ μΌ νΈνκ² μκ°ν μ μλ λ¬Έλ²μΈ forλ¬Έμ μμ£Ό μ¬μ©νκ² λλ€.
κ³ μ°¨ν¨μλ₯Ό μ΄μ©ν΄ λ κ°κ²°νκ³ ν¨μνμ μΈ μ€νμΌλ‘ λ¬Έμ λ₯Ό νμ΄λ³΄λ €λ μ΅κ΄μ κ°μ ΈμΌκ² λ€.