On the journey of

[프로그래머스 Python 2,3] 약수의 합, x만큼 간격이 있는 n개 숫자 본문

코딩테스트/Python

[프로그래머스 Python 2,3] 약수의 합, x만큼 간격이 있는 n개 숫자

dlrpskdi 2023. 4. 26. 09:27

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

제한사항 - 단, n은 0 이상 3000 이하인 정수입니다.

 

ALG - 약수는 크게 2가지 성질이 있다. 정수 n의 약수라고 하면, 

  • 1 이상 n 이하 (ex. n이 12인데 약수가 12보다 큰 24일 수는 없으니)이다.
  • n을 약수로 나눴을 때, 나머지가 0이다.

SOL - 함수는 정해진 범위(range) 내에서, 1부터 n까지 반복문을 통해 loop하면서 나머지를 도출한다. 그리고 나머지가 0인 인자들을 answer이라는 변수에다 추가하면 된다. answer은 0(default)으로 설정해놓고 시작한다.

 

 

그리고 결과는 무난히 성공 :)

2. x만큼 간격이 있는 n개의 숫자 : 함수 solution은 정수 x와 자연수 n을 입력받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 

제한조건 - x는 -10,000,000 이상 10,000,000 이하인 정수이며 n은 1000 이하인 자연수입니다. 

[ 입출력예시 ]

x n answer
2 5 [2,4,6,8,10]
4 3 [4,8,12]
-4 2 [-4,-8]

ALG - 알고리즘보다는 파이썬에서의 Range 기능을 상기해보자. 

Range(start, stop, step) 순서로, start에서 시작해 step(등차수열에서의 공차) 간격으로 stop까지 진행한다는 의미.

 

SOL - 이러한 Range를 사용해 입력받은 x(start)부터 시작해, step도 x인 리스트를 작성하면 된다.

* 또한, 해당사항이 없는 숫자들(ex. 출력예시에서 7은 [2,4,6,8,10]에 들어갈 일이 없음) 은 추가되지 않게끔, else 조건을 활용한다. 

 

가뿐히 성공 :)