Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- IOS
- Info.plist
- replacesubrange()
- GIT
- reduce()
- swift
- 대문자소문자
- 프로그래머스
- xib
- 알고리즘
- alamofire
- 코딩테스트
- API
- zip()
- String()
- uisearchbar
- 라이징캠프
- 싱글톤
- MVC
- Segue
- 클론코딩
- prefix()
- github
- components()
- 코드업 파이썬 기초 100제
- uikit
- tableView
- suffix()
- joined()
- Autolayout
Archives
- Today
- Total
Daeng iOS
[프로그래머스 코테 기초 Swift] #4-3 홀짝에 따라 다른 값 반환하기 본문
프로그래머스 코딩 기초 트레이닝의 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의 제곱한 수를 더해주는 것이고
홀수인 경우에는 그냥 +를 해서 반환한다
'알고리즘 & 코딩테스트 > 프로프래머스' 카테고리의 다른 글
[프로그래머스 코테 기초 Swift] #4-5 flag에 따라 다른 값 반환하기 (0) | 2024.05.26 |
---|---|
[프로그래머스 코테 기초 Swift] #4-4 조건 문자열 (0) | 2024.05.23 |
[프로그래머스 코테 기초 Swift] #4-2 공배수 (0) | 2024.05.22 |
[프로그래머스 코테 기초 Swift] #4-1 n의 배수 (0) | 2024.05.22 |
[프로그래머스 코테 기초 Swift] #3-5 두 수의 연산값 비교하기 (0) | 2024.05.22 |