알고리즘 & 코딩테스트/프로프래머스
[프로그래머스 코테 기초 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의 제곱한 수를 더해주는 것이고
홀수인 경우에는 그냥 +를 해서 반환한다