본문 바로가기

 𝗔𝗣𝗣𝗟𝗘/ALGORITHM

[내일배움캠프] 데일리 루틴(iOS_3회차) - 짝수의 합

이미지를 클릭하면 코딩테스트 페이지로 이동합니다

 

내 풀이

func solution(_ n: Int) -> Int {
    var result = 0
    
    for i in 1...n {
        if i % 2 == 0 {
            result += i
        }
    }
    
    return result
}
  1. result 변수를 0으로 초기화, 이 변수는 더할 값을 저장하는데 사용
  2. 1부터 n까지의 모든 수에 대한 for-in 루프를 실행
  3. 각 숫자 i에 대해 if 문을 사용하여 i가 짝수인지 확인 (i % 2 == 0)
  4. 만약 i가 짝수라면, result에 i를 더함
  5. 모든 숫자에 대한 루프가 끝나면 최종 결과인 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로 변환하여 출력
 
Recent Posts
Visits
Today
Yesterday
Archives
Calendar
«   2024/10   »
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 31