[코딩테스트 연습] 정수 내림차순으로 배치하기
in Code
정수 내림차순으로 배치하기
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 사항
- n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n | return |
---|---|
118372 | 873211 |
코드 작성
function solution(n) {
const newArr = n.toString().split("");
let answer = 0;
let temp;
for (let i = 0; i < newArr.length - 1; i++) {
if (newArr[i] < newArr[i + 1]) {
temp = newArr[i];
newArr[i] = newArr[i + 1];
newArr[i + 1] = temp;
i = -1;
}
}
answer = Number(newArr.join(""));
return answer;
}
[ TIP ]
주어진 정수 n을 문자열 배열로 변환한다.
반복문을 활용하여 배열의 요소 앞 뒤를 비교하여, 뒤에 요소가 더 큰 값일 경우 temp 변수에 앞의 요소를 담아주고 자리를 바꿔준다.
자리가 바뀔 경우 처음부터 반복하면서(i = -1) 가장 큰 수가 앞에 오게한다.
배열에 담긴 값을 숫자로 변환한다.
sort((a,b) => b-a)를 활용하여 배열의 숫자를 큰 순으로 자동정렬 할 수 있으나, sort를 사용하지 않고 풀어보고 싶었다.
[ toString() ]
toString() 은 문자열을 반환하는 object의 대표적인 방법이다.
[ split() ]
split() 메서드는 String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눈다.
[ join() ]
join() 메서드는 배열의 모든 요소를 연결해 하나의 문자열로 만든다.