https://school.programmers.co.kr/learn/courses/30/lessons/12932
이 문제도 역시 프로그래밍적인 것 보다 수학적 풀이도 다시 상기하기위해 작성하였다.
나의 풀이
function solution(n) {
return [...n+""].reverse().map(x=>+x);
}
이 풀이를 하기전에 또 문제를 제대로 읽지 않았다.
정렬하고 뒤집기는 전혀다른 소리다
필자는 예제만 보고 내림차순 정렬로 이해해서 sort를 사용했다. 당연히 테스트 케이스는 통과했지만 제출하면 실패했다.
function solution(n) {
return [...n+""].sort((a,b) => +b - +a).map(x=>+x);
}
이렇게 하면 정렬문제이다.
15324 를 뒤집으면 42351 이다. 즉 정렬을 하면 안된다.
문제를 잘 읽자 문제를 제대로 읽지 않아서 실수하는 경우가 늘고있다.
조금 더 신경쓰자
수학적 풀이
function solution(n) {
var arr = [];
do {
arr.push(n%10);
n = Math.floor(n/10);
} while (n>0);
return arr;
}
생각지도 못한 방법이었다.
이 코드는 10의자리 미만을 arr에 담고난뒤
n에다 10을 나눈뒤 정수로 만들어서 즉 10미만을 제하고 다시 n에 재 할당한다.
이렇게 계산하면
12345를 나눈다고하면
arr = [5]
n = 1234
arr = [5,4]
n = 123 이런식으로 나아간다.
'알고리즘 > 프로그래머스 - JS' 카테고리의 다른 글
[프로그래머스-JS] level.1 최대공약수와 최소공배수 <*> (0) | 2022.08.04 |
---|---|
[프로그래머스-JS] level.1 정수 제곱근 판별 < (0) | 2022.08.04 |
[프로그래머스-JS] level.1 자릿수 더하기 (0) | 2022.08.03 |
[프로그래머스-JS] level.1 약수의 합 < **> (0) | 2022.08.03 |
[프로그래머스-JS] level.1 문자열을 정수로 바꾸기 (0) | 2022.08.02 |