Lv. 1 - 정수 내림차순으로 배치하기 풀이과정
문제 설명
- 함수 solution은 정수
n
을 매개변수로 입력받습니다. -
n
의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. - 예를들어
n
이 118372면 873211을 리턴하면 됩니다.
제한사항
-
n
은 1이상 8000000000 이하인 자연수입니다.
입출력 예
N | return |
---|---|
118372 | 873211 |
프로그래머스에서 제공한 코드
처음 프로그래머스에서 작성된 코드는 아래와 같다.
function solution(n) {
var answer = 0;
return answer;
}
문제 풀이
const solution = (n) => {
let arr = (n + "").split("").map(Number);
arr.sort((a, b) => b - a);
return Number(arr.join(""));
};
함수 선언
- 화살표 함수를 사용하여
n
매개변수를 받는다.
풀이
-
n
에 전달받은 값을(n + '').split('')
사용하여n
의 값 118372를 배열[1,1,8,3,7,2]로 만든 후 변수arr
에 담아줌 - 배열로 만들어 준 후
sort((a, b) => b - a)
를 사용하여 arr 배열의 값을 내림차 순으로 변경함 -
Number(arr.join(''))
을 통해 배열 arr을 문자열로 만들어 주고 정수로 리턴함
결과 반환
-
let arr = (n + '').split('').map(Number)
// [1,1,8,3,7,2] -
arr.sort((a,b) => b - a)
// [8,7,3,2,1,1] -
Number(arr.join(''))
// 873211
실행
-
console.log(solution(118372))
실행하면 873211가 출력된다.
다른 사람의 풀이 참고
오늘은 오름차순, 내림차순을 배웠다.
아직까지 내가 아는게 많이 없어서 다른 사람의 풀이를 보며 다양한 문법을 보는것이 너무 감사하다.
// [16명] awer000 , nhj-_- , minho.choi , rocks 외
function solution(n) {
// 숫자를 문자열로 변환
const newN = n + "";
// 문자열을 배열로 변환하고 정렬한 다음, 역순으로 배열하고 다시 문자열로 합침
const newArr = newN
.split("") // 문자열을 각 문자로 쪼갬
.sort() // 기본적으로 오름차순 정렬
.reverse() // 역순으로 변환하여 내림차순으로 만듦
.join(""); // 다시 문자열로 합침
// 문자열을 숫자로 변환하여 반환
return +newArr;
}
// [14명] Chi Hoon Koo , Park Duyoung , 181203s , 이은빈 외
function solution(n) {
// 문자풀이
return parseInt((n + "").split("").sort().reverse().join(""));
}
링크
- 문제 링크: 문제 링크
- Git: rarrit github
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges