처음 풀이
/*
문제 : n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 구하라
자료 : 정수 n
계획 :
정수 n을 배열로 바꾼 후, sort이용
그리고 join을 문자열 - > 숫자로 바꿔줌
숫자풀이
나누어 떨어지는 값과 몫을 이용하여 푼다.
118372 % 10을 할경우 나머지는 2가된다.이걸 새로운 배열에 집어넣는다.
그리고 몫은 118372다 . 이거를 반복문에 넣는다.
반성 :
숫자풀이로 하는 게 속도가 더 빠른데 직접 짜는 게 너무 어렵다.
toString() - 문자타입으로 변환
split() - 문자열을 구분자로 잘라서 배열로 저장
sort() - 배열을 정렬
reverse() - 원소 순서를 반대로
join() - 배열 합치기
Number() - 숫자타입으로 변환
*/
const solution = (n) => {
const numbers = String(n)
.split('')
.sort((a, b) => b - a)
.join()
.replace(/,/g, '');
return Number(numbers);
};
좀더 간단하게 문자열 풀이
const solution2 = (n) => {
return parseInt((n + '').split('').sort().reverse().join(''));
};
숫자 풀이
const solution3 = (n, result = []) => {
result.push(n % 10);
if (n < 10) {
return Number(result.sort((a, b) => b - a).join(''));
}
return solution3(Math.floor(n / 10), result);
};
배열로 만들지않고 정말 숫자로만 끝낼수 있는 방법은 없는 걸까???
뭔가 될 거같은데 코드로 작성이 되지가 않는다.
'Algorithm' 카테고리의 다른 글
[JavaScript] x만큼 간격이 있는 n개의 숫자 (0) | 2022.09.21 |
---|---|
[JavaScript] 프로그래머스 - 문자열을 정수로 바꾸기 (0) | 2022.09.21 |
[JavaScript] 프로그래머스 - 하샤드 수 (0) | 2022.09.20 |
[JavaScript] 프로그래머스 - 문자열 내 p와 y의 개수 (0) | 2022.09.20 |
[JavaScript] 프로그래머스 - 자연수 뒤집어 배열로 만들기 (0) | 2022.09.20 |