[iOS / Swift] 홀짝에 따라 다른 값 반환하기

justdotheg·2024년 2월 9일

문제

풀이

import Foundation

func solution(_ n:Int) -> Int {
    var answer = 0 

    if n % 2 == 1{
       for i in 1 ... n{
            if i % 2 == 1{
                answer += i                
            }
        }
    }else{
        for i in 1 ... n{
            if i % 2 == 0{
                answer += i*i
            }
        }
    }

    return answer
}

최적화1

import Foundation

func solution(_ n:Int) -> Int {
    return n % 2 == 0 ? (n / 2 * (n / 2 + 1) * (n + 1)) * 2 / 3 : (n / 2 + 1) * (n / 2 + 1)
}

최적화2

import Foundation

func solution(_ n:Int) -> Int {
    if n % 2 == 0 { return stride(from: 2, through: n, by: 2).reduce(0) { $0 + $1 * $1 } }
    else { return stride(from: 1, through: n, by: 2).reduce(0, +) }
}

요약

  • 최적화 1번 방법은 점화식을 사용한 방법
  • 최적화 2번 방법은 stride 펑션과 reduce 펑션을 사용한 방법
  • 점화식 짜기가 귀찮다면 방법 2를 사용하자!

0개의 댓글