반응형
문제
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
입출력 예
n : 118372 > return : 873211
순서 생각하기
- 우선은 받아온 n숫자를 배열로 바꾼다.
- 그 배열을 내림차순으로 정렬한다.
- 정렬된 배열을 다시 문자 or 숫자열으로 뽑아낸다.

첫시도부터 틀렸다.
- const arr = n.toString().split('').map();
- map() 메서드
array.map(callback(currentValue, index, array))
- callback : 배열의 각 요소에 대한 호출할 함수
- currentValue : 현재 처리중인 배열의 요소
- index (선택) : 현재 처리 중인 요소의 인덱스
- array (선택) : map()이 호출된 배열
- const arr = n.toString().split('').map(); 이 실행 안되는 이유
- map()메서드를 사용할때 반드시 매개변수를 전달해야하기 때문이다.
- 배열의 각 요소에 대해 실행할 함수 (콜백)을 인자로 받아야하는데 빈값이라서 오류가 났다.
- .map(Number); 로 문자를 숫자로 변환시켜주는 콜백함수를 넣어주자.
function solution(n) {
const arr = n.toString().split('').map(Number);
// 받아온 값을 문자로 바꾼다 > 자른다 > map함수로 숫자로 바꿔 배열로 넣는다.
arr.sort();
arr.sort(function(a, b) {
return b - a;
});
var arrString = '';
for(let i = 0; i < arr.length; i++){
arrString += arr[i];
//console.log(arrString ,'arrString')
}
return arrString
}
console.log(solution(118372))

떙이란다... 실행결과가가 "873211"인걸 보니 문자열인가보다.
숫자로 바꾸어주자.
- return Number(arrString);
최종코드
function solution(n) {
const arr = n.toString().split('').map(Number);
arr.sort();
arr.sort(function(a, b) {
return b - a;
});
var arrString = '';
for(let i = 0; i < arr.length; i++){
arrString += arr[i];
//console.log(arrString ,'arrString')
}
return Number(arrString);
}
console.log(solution(118372));

응 아주 좋아!! 성공이다!!!
반응형
LIST
'알고리즘 문제' 카테고리의 다른 글
| [프로그래머스]콜라츠 추측-JS (feat.while문) (0) | 2025.01.07 |
|---|---|
| [프로그래머스] - 하샤드수 - JavaScript (2) | 2025.01.06 |
| [프로그래머스]음양 더하기_JavaScript (1) | 2025.01.02 |
| [프로그래머스]문자열 내 p와 y의 개수_JavaScipt (0) | 2025.01.02 |
| [프로그래머스]정수 제곱근 판별-JavaScript (2) | 2025.01.02 |