개발자/프로그래머스 알고리즘

코딩테스트 연습 - 약수의 합 | 프로그래머스 js ★★☆☆☆

YoungDogg 2022. 1. 13. 09:30

코딩테스트 연습 - 약수의 합 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 약수의 합

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수

programmers.co.kr

 

0 ~ 3000 중 한 숫자의 야구를 구하는 것이다.

예)

  2 4 6 12
약수 1 + 2 = 3 1 + 2 + 4 = 7 1 + 2  + 3 + 6 = 12 1 + 2  +3 + 4 + 6 + 12 = 28

내 코드

for문을 절반만 도는 점과 set, 그리고 reduce를 썼다. 

다른 사람 코드

 

다른 사람 코드와 비교했을 때 내 코드의 시간이 40배 더 지체됐다. 절반으로 줄여도 set이나 reduce를 써서 그런 것 같다. reduce를 안쓰려 for문 안에 sum에 set값을 넣어주려 했다. 하지만 set를 array로 바꿔야 했다. 하지만 for문을 탈출해서 array에 set를 할당해야 했다. 결국 for문 하나를 더 만들어야 했다.

 

차라리 남이 한 것처럼 숫자의 전체를 도는 게 코드도 짧고 처리 속도도 빠를 것 같다.