내 풀이
func solution(_ n: Int) -> Int {
var result = 0
for i in 1...n {
if i % 2 == 0 {
result += i
}
}
return result
}
- result 변수를 0으로 초기화, 이 변수는 더할 값을 저장하는데 사용
- 1부터 n까지의 모든 수에 대한 for-in 루프를 실행
- 각 숫자 i에 대해 if 문을 사용하여 i가 짝수인지 확인 (i % 2 == 0)
- 만약 i가 짝수라면, result에 i를 더함
- 모든 숫자에 대한 루프가 끝나면 최종 결과인 result를 반환
더 간결한 코드를 사용하려면 어떻게 해야할 지 고민해보았을 때, 짝수는 2씩 증가하므로 for루프의 반복 범위를 2씩 증가 시킨다면 더 짧은 코드를 작성할 수 있지 않을까? 하는 생각으로 찾아 봤을 때 stride을 사용하면 될 것 같았다.
func solution(_ n: Int) -> Int {
return stride(from: 2, through: n, by: 2).reduce(0, +)
}
stride란?
특정 범위의 숫자를 지정된 간격으로 나열할 수 있는 함수
stride(from: start, to: end, by: step)
stride(from: start, through: end, by: step)
- start: 시작 값
- end: 종료 값 (to를 사용할 경우에는 이 값은 제외됨)
- step: 간격
- stride(from: to: by:) 시작 값부터 종료 값까지 간격으로 숫자 시퀀스를 생성, 종료 값은 시퀀스에 포함되지 않음
- stride(from: through: by:) 시작 값부터 종료 값까지 간격으로 숫자 시퀀스를 생성, 종료 값은 시퀀스에 포함
예시
let sequence1 = stride(from: 1, to: 10, by: 2)
print(Array(sequence1)) // [1, 3, 5, 7, 9]
let sequence2 = stride(from: 1, through: 10, by: 2)
print(Array(sequence2)) // [1, 3, 5, 7, 9, 11]
// stride 함수를 사용하여 간격이 2인 숫자 시퀀스를 생성하고, Array로 변환하여 출력
' 𝗔𝗣𝗣𝗟𝗘 > ALGORITHM' 카테고리의 다른 글
[내일배움캠프] 데일리 루틴(iOS_3회차) - 문자열을 정수로 바꾸기 (0) | 2024.02.01 |
---|---|
[내일배움캠프] 데일리 루틴(iOS_3회차) - 자연수 뒤집어 배열로 만들기 (0) | 2024.01.31 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 배열의 평균값 (0) | 2024.01.31 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 두 수의 나눗셈 (0) | 2024.01.31 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - x만큼 간격이 있는 n개의 숫자 (0) | 2024.01.30 |