728x90
반응형
1. 문제
프로그래머스 알고리즘 문제풀이 - 자바스크립트 [ 약수 구하기 ]
2. 시도해본 것들
24의 결과값을 봤을때, 약수는 해당 값으로 나눴을때 딱 떨어지는
나머지가 0인 값이다.
3. 해결과정
모두 탐색해야하기 때문에 for문을 떠올렸다.
1부터 모두 돌아서 각각 n을 나눴을때 나머지가 0이 되는 값을 배열에 넣었다.
도대체 어떻게 풀지라고 생각들었던 것인데,
왜 정답이 저렇게 나오지?
라고 생각할때 잘 풀리는 것 같다.
4. 알게 된 점
나의 코드
function solution(n) {
var answer = [];
for(i=1; i<=n; i++){
if(n%i === 0){
answer.push(i)
}
}
return answer;
}
남의 코드
function solution(n) {
return Array(n).fill(0).map((v, index) => index+1).filter((v) => n%v===0);
}
fill은 처음 보는 함수인데 Array(n)은 Array(20)과 같이 숫자(또는 문자열) 20을 반환할 것 이다.
그럼 fill(0)은 배열에 20개를 모두 0 으로 가득채운다.
map으로 각각 요소에 인덱스 번호로 1을 더해주면
인덱스는 0부터 시작하기에 [1,2,3,4, ... 20]이 들어갈 것이고,
filter를 통해 해당 요소가 나머지가 0일 때에만 값을 반환하도록 한다.
해당 함수들을 알더라도 위와 같은 풀이로 풀지 못했겠지만,
새로운 방식과 함수를 배워서 뜻 깊다.
728x90
반응형
'일기 > TIL' 카테고리의 다른 글
TIL: Today I Learned 68일차 [ 문자열 정렬하기2 ] (0) | 2023.02.22 |
---|---|
TIL: Today I Learned 67일차 [ 숫자찾기 ] (1) | 2023.02.21 |
TIL: Today I Learned 65일차 [ Table [테이블명] doesn't exist ] (0) | 2023.02.17 |
TIL: Today I Learned 64일차 [ 개념공부 ] (0) | 2023.02.16 |
TIL: Today I Learned 63일차 [ 가장 큰 수 찾기 ] (0) | 2023.02.15 |