본문 바로가기

프로그래머스 (Swift)/기초

[Day4-3] 홀짝에 따라 다른 값 반환하기

문제

내 정답 코드

import Foundation

func solution(_ n:Int) -> Int {
    
    var result = 0
    
    if n % 2 == 0 {
        for i in 0...n {
            if i % 2 == 0 {
                result += (i * i)
            }
        }
    } else {
        for i in 0...n {
            if i % 2 == 1 {
                result += i
            }
        }
    }
    
    return result
}

 

#

1. if문과 반복문을 사용하여 구현하였다.

 

위 코드는 잘 돌아가지만 지저분해 보여서 새로 코드를 짜보았다.

filter, map, redece함수를 적용하여 해결하였다.

import Foundation

func solution(_ n:Int) -> Int {
    
    var result = 0
    
    if n.isMultiple(of: 2) {
        result = (1...n).filter { $0.isMultiple(of: 2) }.map { $0 * $0 }.reduce(0, +)
    } else {
        result = (1...n).filter { !$0.isMultiple(of: 2) }.reduce(0, +)
    }
    
    return result
}

배운 기술

 

1. filter

https://developer.apple.com/documentation/swift/set/filter(_:)

 

filter(_:) | Apple Developer Documentation

Returns a new set containing the elements of the set that satisfy the given predicate.

developer.apple.com

 

2. map

https://developer.apple.com/documentation/swift/array/map(_:)-87c4d

 

map(_:) | Apple Developer Documentation

Returns an array containing the results of mapping the given closure over the sequence’s elements.

developer.apple.com

 

3. reduce

https://developer.apple.com/documentation/swift/array/reduce(_:_:)

 

reduce(_:_:) | Apple Developer Documentation

Returns the result of combining the elements of the sequence using the given closure.

developer.apple.com

'프로그래머스 (Swift) > 기초' 카테고리의 다른 글

[Day4-5] flag에 따라 다른 값 반환하기  (0) 2024.01.28
[Day4-4] 조건 문자열  (0) 2024.01.28
[Day4-2] 공배수  (0) 2024.01.28
[Day4-1] n의 배수  (0) 2024.01.25
[Day3-5] 두 수의 연산값 비교하기  (0) 2024.01.21