2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[Swift] Programmers - 짝수의 합

2024. 2. 19. 20:17ㆍIOS/Swift-Algorithm (Programmers)
SMALL

https://school.programmers.co.kr/learn/courses/30/lessons/120831

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

* 짝수의 합 *

정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

아홉번째 미션으로 짝수의 합을 구하는 미션이 주어졌습니다.

자, 어떤 문제가 나오던 절때 쫄지 않아야 한다는 점 기억하고 있겠죠?

이전 알고리즘들과 동일하게 문제를 잘 살펴(파악해) 봅시다.

정수 n이 주어 질 때, n 이하의 짝수를 모두 더한 값을 반환 하도록 함수를 작성하라!

핵심 내용이 다 나왔죠?!

 

그렇다면, 문제를 그대로 읽고 생각해 보자구요!?

정수는 int / n은 어떠한 숫자

짝수는 2, 4, 6, 8, 10 요런것들~

모두 더한 값은 Sum​을 생각해볼 수 있겠죠?

이랬을 때 우리가 해볼 수 있는 방식은 어떤 방식이 있을까요?

문제 해결 방식의 핵심은 "짝수"라는 단어와 "모두 더한 값"에 있습니다!

어느정도 감이 오실까요?

짝수를 구하기 위해서는 무엇을 해야할까요?

 

숫자를 반복 하여 출력 해 보는 것이겠죠?!

1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ...

이중 짝수만 출력 될 수 있도록 하는 것이죠!

1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ...

 

그렇다면~ 우리가 반복문이라는 것을 사용해야한다는 게 되겠죠?!

 

그렇다면, 반복문에 대해서 잠깐 알아봅시다!


 

Swift에서의 반복문은 크게 두종류의 반복문이 있습니다.

for-in 반복문과 while 반복문

위 두 종류의 반복문이 존재 하는데, 먼저 for-in 반복문을 알아봅시다.

for-in 반복문

for-in 반복문은 특정 범위나 컬렉션의 각 요소에 대해 반복하여 작업을 수행할 때 사용되고,

주로 배열이나 딕셔너리와 같은 컬렉션에서 사용되며, 반복할 대상을 명시적으로 지정해요!

예를 들어, "for item in collection { // 작업 수행 }"과 같이 사용해요!

for-in 반복문에 대해 좀 더 알아보자면, for-in 반복문은

Swift에서 주어진 범위, 컬렉션 또는 시퀀스의 각 요소를 순회할 때 사용 되며,

이 반복문은 아래와 같은 구조를 가지게 됩니다.

 

for item in collection {
    // 반복할 작업
}

 

여기서

"item"은 반복문 내에서 사용될 반복 변수이며, 이 변수에는 컬렉션의 각 요소가 순차적으로 할당되고

"collection"은 반복할 대상인 컬렉션이나 시퀀스이며, 이는 배열, 딕셔너리, 집합 등의 데이터 구조일 수 있고

for-in 반복문은 반복할 컬렉션의 크기만큼 반복 하면서 각 요소에 대해 작업을 수행해요!

예를 들어, 배열의 각 요소를 순회하면서 특정 작업을 수행하거나

또는

딕셔너리의 각 키-값 쌍에 대해 작업을 수행할 때 유용하게 사용됩니다.

다음은 배열을 순회하면서 각 요소를 출력하는 간단한 예시입니다~

let numbers = [1, 2, 3, 4, 5]
for number in numbers {
    print(number)
}

 

이 코드는 배열 numbers의 각 요소를 순회하면서 각 숫자를 출력해요.

그리고

for-in 반복문은 또한 특정 범위 내의 숫자를 순회할 때도 사용될 수 있어요.

예를 들어, 1부터 10까지의 숫자를 순회하는 코드는 다음과 같아요.

 

for i in 1...10 {
    print(i)
}

 

이 코드는 1부터 10까지의 숫자를 순회하면서 각 숫자를 출력해요.

이렇게 for-in 반복문을 사용하여 컬렉션의 각 요소를 순회하거나 특정 범위 내의 숫자를 순회할 수 있어요!

이해가 되셨죠?!

[i의 정의]

for-in 반복문에 i가 있는 걸 볼 수 있는데,

왜 for-in 반복문에 i가 있는지 i가 왜 있는건지 궁금하실 수 있을 거라 생각됩니다.

i는 간단히 말해서 'index'의 약자로 반복문에서 주로 사용되는 관례적 이름이며,

for-in 반복문에서의 i는 반복 변수를 나타내고 있고

이 변수는 각 반복에서 현재의 상태를 추적 및 제어하는 데 사용 된다는 것!

반복의 각 단계를 나타내고 주로 정수의 값을 가진다는 것을 알아 두어야 합니다.

즉, for-in에서의 i는 각 반복의 상태를 말하고, 컬렉션의 요소 or 특정 범위의 값을 반복적으로 가져오는데

사용됨을 나타내고 있다는 것입니다.

이렇게 해서 for-in 반복문은 컬렉션 내의 각 요소를 순회하거나,

특정 범위 내의 값을 반복적으로 가져와서 작업을 수행하는 데에 사용돼요!

 


 

while 반복문

while 반복문은 주어진 조건이 참일 때 반복하여 작업을 수행하며,

반복할 조건이 처음부터 거짓이라면 한 번도 실행되지 않을 수 있어요!

예를 들어, "while 조건 { // 작업 수행 }"과 같이 사용돼요!

while 반복문에 대해 좀 더 알아볼까요!?

while 반복문은 다음과 같은 구조를 가지는데 한번 살펴 봅시다.

 

while condition {
    // 조건이 참일 동안 반복적으로 실행할 코드
}

 

자, 여기서

condition은 반복문의 실행 여부를 결정하는 조건이 됩니다.

조건이 참일 경우 반복문이 계속 실행되고

이 조건은 반드시 부울(Boolean) 값을 반환해야 해요!

그리고 while 반복문은 다음과 같이 작동해요!

1. 반복문이 실행될 때 먼저 condition을 평가하고 -> 2. 조건이 참이면, 반복문 내의 코드 블록을 실행해요 - 3. 코드 블록이 실행된 후 다시 condition을 평가하고 -> 4. 조건이 여전히 참이면, 코드 블록을 다시 실행해요.

이 과정을 조건이 거짓이 될 때까지 반복하는 것이에요!

예를 들어, 다음은 변수 count가 5보다 작을 때까지 값을 출력하는 간단한 예제 인데 한번 살펴 보면

 

var count = 0
while count < 5 {
    print(count)
    count += 1
}

 

count가 5보다 작을 때까지 count의 값을 출력하고, count를 1씩 증가시키는 작업을 반복해요.

while 반복문은 조건이 참인 동안에만 반복을 계속하므로, 조건을 신중하게 설정하여

무한 반복에 빠지지 않도록 주의해야 해요!

 


 

자, 이제 본론으로 돌아와 봅시다.

여기서 부터 햇갈릴 수 있으니 문제를 다시 살펴 봅시다!

정수 n이 주어 질 때, n 이하의 짝수를 모두 더한 값을 반환 하도록 함수를 작성하라!

자 우리는 반복문을 사용해야하잖아요?!

그렇다면 문제를 봤을 때엔 우리가 사용 할 태그는 while 반복문은 아닌 것을 알 수 있죠?!

그러면 남은 태그는 for-in반복문이 됩니다.

그렇다면 이제 로직을 알아봅시다!

지금까지 알게 된 내용은

"반복문(for-in)을 사용하여 1부터 " n "까지의 모든 수에 대해 반복 해야 하는것.

그리고 그 수를 반복 했을 때 숫자가 짝수인지 확인해야 하는것.

그리고 짝수만 모두 더한 값을 반환 하는것!"

정말 쉽게 이해가 되었죠?!

그렇다면 로직 또한 어느정도 머릿속에 그려지죠?

자, 쉽게 이야기해서 ​이 문제의 핵심은 1부터 주어진 수 'n'까지의 모든 짝수를 더하는 역할을 해요!

먼저 우리는 변수를 초기화 해서 더해진 값을 저장할 공간을 만들어주어야 해요.

* 여기서잠깐 *

변수를 초기화 한다는 건 var (변수선언) 을 사용하여 최초로 변수를 선언하고

그 안에 0이라는 값을 할당하여 초기값으로 0을 준 상태를 말해요.

즉, 단순히 변수를 선언하고 초기화를 진행하지 않는다면 이 변수는 사용을 못하는 것을 의미 하죠.

 

func solution(_ n: Int) -> Int {
    var sum = 0;

 

그리고 나서 우리는 1부터 n까지의 모든 수에 대해 반복할 함수를 작성 해야해요!

func solution(_ n: Int) -> Int {
    var sum = 0
    
    // 1부터 n까지의 모든 수에 대해 반복
    for i in 1...n {
    
        }

 

그리고

반복문 내에서는 각 숫자가 짝수인지 확인하는 로직을 작성해주어야 해요.

우리가 짝수 여부를 확인하기 위해서는 어떻게 해야할까요?!

자 이문제의 목표는 짝수 여부를 확인 해야하는 거잖아요?

짝수 여부를 확인해야 하는 조건이 있기 때문에 if 문을 사용 해야 하는 것입니다!

그리고

우리는 짝수/홀수를 구분하기 위해 % (나머지 연산자)도 사용을 해야 하는 것이죠.

그렇다면 아래와 같은 로직으로 구성 될 수 있습니다~

if i % 2 == 0 {
       sum + = i
   }

 

만약(if) i(반복되는값을) % 2(2로 나눴을때) == 0 (나머지는 0으로써 이는 rtue 값이니까)

sum(변수에 i를 더해서 출력하라) 라고 선언을 해주고 sum을 반환 해주면,

sum에 해당 값 i를 더해서 누적하여 모든 짝수를 찾고 그 더한 결과를 sum에 저장 하는 방식이 되는 것입니다!

func solution(_ n: Int) -> Int {
    var sum = 0
    
    // 1부터 n까지의 모든 수에 대해 반복
    for i in 1...n {
        // 짝수인 경우에만 합산
        if i % 2 == 0 {
            sum += i
        }
    }
    return sum
}
728x90