문제
내 정답 코드
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(_:)
2. map
https://developer.apple.com/documentation/swift/array/map(_:)-87c4d
3. reduce
https://developer.apple.com/documentation/swift/array/reduce(_:_:)
'프로그래머스 (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 |