개발자/프로그래머스 알고리즘
코딩테스트 연습 - 약수의 합 | 프로그래머스 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문 하나를 더 만들어야 했다.
차라리 남이 한 것처럼 숫자의 전체를 도는 게 코드도 짧고 처리 속도도 빠를 것 같다.