Daeng iOS

[프로그래머스 코테 기초 Swift] #4-3 홀짝에 따라 다른 값 반환하기 본문

알고리즘 & 코딩테스트/프로프래머스

[프로그래머스 코테 기초 Swift] #4-3 홀짝에 따라 다른 값 반환하기

U_Daeng 2024. 5. 23. 09:30

프로그래머스 코딩 기초 트레이닝의 Day4은 "연산, 조건문"에 관한 문제다

🗒️ 문제


✏️ 내 풀이 

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

    if (n % 2 != 0) {
        for i in 1...n {
            if (i % 2 != 0) {
                result += i
            }
        }
    }
    else if (n % 2 == 0) {
        for i in 1...n {
            if (i % 2 == 0) {
                result += (i*i)
            }
        }
    }
    return result
}

 

꽤 복잡..? 하게 해결했다 

먼저 홀수인 경우랑 짝수인 경우를 나머지를 구해서 판단하였고 

그 안에서 반복문을 돌려서 또 홀수/짝수를 판단해서 해당하는 것들을 더해준 것..!

 

분명 간단하게 푸는 방법이 있을 것도 같았지만 방법이 떠오르지 않았다 

 

🔍 다른 풀이

1) 
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) 

stride()라는 함수를 처음 봤는데 

시작(from:)부터 끝(through:)까지 정해진 만큼(by:) step으로 반환을 하는 함수이다 

 

그래서 짝수일 경우 2부터 까지 2씩 증가되는 수를 반환하며 

reduce()를 활용하여 0에다가 계속 클로저에 있는 연산을 실행 한 값을 더해줘서 반환한다

클로저에 있는 내용을 보자면,, 짝수인 경우는 제곱의 합을 구하는 것이기 때문에 

$0에 $1의 제곱한 수를 더해주는 것이고

홀수인 경우에는 그냥 +를 해서 반환한다