[문제]
정수 n의 각 자릿수를 큰것부터 작은 순으로 내림차순 정렬한 새로운 정수를 리턴.
[로직]
1. 정수 n을 문자열로 바꾼다.
2. 빈 배열의 새로운 변수를 지정해준다.
3. for문을 돌려 문자열로 바꾼 n의 자릿수 하나하나를 순서대로 빈 배열에 push해준다.
4. sort() 함수를 이용해 배열을 내림차순으로 정렬해주고, 다시 정수로 변환한다.
[코드]
const n = 118372;
function solution(n) {
let str = n.toString();
let arr = [];
for (let i = 0; i < str.length; i++) {
arr.push(parseInt(str[i]));
}
return parseInt(arr.sort((a, b) => b - a).join(''));
}
console.log(solution(n)); // 결고 값 : 873211
1. .toString()을 이용해 정수 n을 문자열로 바꾼다.
let str = n.toString()
2. 빈 배열의 새로운 변수를 지정해준다.
let arr = [];
3. for문을 돌려 문자열로 바꾼 n의 자릿수 하나하나를 순서대로 빈 배열에 push해준다.
arr.push(parseInt(str[i]));
→ 문자열이라 "1"처럼 문자로 push되므로 parseInt()를 이용해 정수로 변환.
4. sort() 함수를 이용해 배열을 내림차순으로 정렬해주고, 배열을 합쳐 문자열로 만든 후, 다시 정수로 변환한다.
parseInt(arr.sort((a, b) => b - a).join(''));
다른 사람들은 어떻게 풀었나
function solution(n) {
const newN = n + "";
const newArr = newN
.split("")
.sort()
.reverse()
.join("");
return +newArr;
}
function solution2(n) {
//숫자가 분명히 더 빠름
var nums =[];
do{
nums.push(n%10);
n=Math.floor(n/10);
} while(n>0)
return nums.sort((a,b)=>b-a).join('')*1;
//문자는 느림
// return (n+"").split('').sort((a,b)=>b-a).join('')*1;
}
▼ sort() 오름차순
function compareNumbers(a, b) {
return a - b;
}
▼ sort() 내림차순
function compareNumbers(a, b) {
return b - a;
}
▼ join() 배열 연결하기
var a = ['바람', '비', '불'];
var myVar1 = a.join(); // myVar1에 '바람,비,불'을 대입
var myVar2 = a.join(', '); // myVar2에 '바람, 비, 불'을 대입
var myVar3 = a.join(' + '); // myVar3에 '바람 + 비 + 불'을 대입
var myVar4 = a.join(''); // myVar4에 '바람비불'을 대입
[참고] sort()
Array.prototype.sort() - JavaScript | MDN
sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.
developer.mozilla.org
[참고] join()
Array.prototype.join() - JavaScript | MDN
join() 메서드는 배열의 모든 요소를 연결해 하나의 문자열로 만듭니다.
developer.mozilla.org
'나의 개발일지 > 알고리즘 테스트' 카테고리의 다른 글
[프로그래머스 - Level 1] 콜라츠 추측 (JS) (0) | 2022.07.20 |
---|---|
[프로그래머스 - Level 1] 이상한 문자 만들기 (JS) (0) | 2022.07.19 |
[프로그래머스 - Level 1] 서울에서 김서방 찾기 (JS) (0) | 2022.07.18 |
[프로그래머스 - Level 1] 내적 (JS) (0) | 2022.07.18 |
[프로그래머스 - Level 1] 부족한 금액 계산하기 (JS) (0) | 2022.07.16 |