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

최근 글 👑

[Swift] Programmers - 약수의 합

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

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

 

프로그래머스

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

programmers.co.kr

* 약수의 합 *

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

* 제한사항 *

n은 0 이상 3000이하인 정수입니다.

 

먼저 문제를 잘 살펴 봅시다.

정수 n(어떠한 임의의 정수)을 입력 받아

n의 약수(n을 나누어 떨어지게 하는 어떤 정수)를

다시 말해, 어떠한 수 x가 n의 약수라는 것은 n을 x로 나누었을 때

나머지가 0이 되는 경우 n의 모든 약수를 찾아서

그 값을 모두 더하는 로직을 완성 해라.

라고 하네요~!

그렇다면 우리는 어떠한 로직을 사용을 해야할까요?

n이 0보다 큰지 확인하는 guard구문if-else문1부터 n까지의 범위를 반복하는 for 구문

사용해 볼 수 있겠죠?

자 그렇다면 로직을 풀어봅시다!

func solution(_ n: Int) -> Int {

solution 함수를 정의하고 이 함수는 정수 n을 입력으로 받아 정수를 반환해줘요!

함수 이름은 solution이고, 매개변수로는 n이라는 이름의 정수가 있죠

    guard n > 0 else { 
            return 0 
}

n이 0보다 큰지 확인하는 guard 구문을 이용하여

만약 n이 0 이하라면 0을 반환하고 함수 실행을 종료해줘요!

    var sum = 0

정수 값을 저장할 변수 sum을 초기화해줍시다.

약수의 합을 계산하기 위해 sum이라는 변수를 사용해야 하죠

    for i in 1...n {

1부터 n까지의 범위를 반복하는 for 구문을 사용해

반복할 때마다 i에는 1부터 n까지의 숫자가 순서대로 할당되게 해줍시다.

        if n % i == 0 {

if 구문을 사용해 n을 i로 나누었을 때 나머지가 0인지 확인해줍시다.

i가 n의 약수인지를 검사해주죠!

            sum += i 
        }
    }

sum 변수에 현재의 i 값을 더해줍시다!

i가 n의 약수라면, 즉 n을 i로 나누었을 때 나머지가 0이면 sum에 i를 더해주어야 하죠.

    return sum
}

반복문이 종료된 후에 sum 값을 반환해줍시다!

 

모든 코드를 살펴보면 아래와 같이 됩니다~

func solution(_ n: Int) -> Int {
    guard n > 0 else { return 0 }
    var sum = 0
    for i in 1...n {
        if n % i == 0 {
            sum += i
        }
    }
    return sum
}
728x90