티스토리 뷰

코테이토 4기 알고리즘 스터디

- 10월 1주차 공통과제 A 약수의 합 구하기

 

🎈 문제 및 해석

입력 받은 수의 약수들의 합을 구하여라

1. 약수를 구하기 => 어떤 수 n을 n의 약수로 나누면 0이 된다(자연수 n의 약수 i에 대하여 n%i == 0)는 특성을 활용

2. 그 합을 구하기 = > 위의 조건에 부합하는 i들만 별도로 합 누적하기

 

 

✨ 문제 풀이

// JavsScript
function solution(n) {
    let sum = 0;
    for(let i=1; i<=n; i++){
        sum += (n%i==0)? i: 0;
    }
    return sum;
}
# Python
def solution(n):
    sum = 0
    for i in range(1, n+1):
        sum += i if n % i == 0 else 0
    return sum

 합을 저장할 sum 변수 선언한다. 자연수 n의 약수는 1보다 크고 n보다 같은 수 중에 존재하므로 반복문을 1부터 n까지만 돌 수 있도록 한다. 돌면서 약수 조건(n%i==0)을 확인한 후 sum에 합계를 누적하고, 반복문이 끝난 후의 sum을 반환한다.

 

 

🎯 추가

 Python과 JS를 동시에 쓰는 연습을 하다보니 차이점이 한 눈에 보이는 것 같다. 이 차이를 잊지 않으려 두가지 언어 모두 사용중인 만큼 잘 기억하자!

=> Python은 삼항 연산자의 형태가 타 언어와는 조금 다르게 if else를 사용한다.

Comments