문제 유형 : 정렬
https://school.programmers.co.kr/learn/courses/30/lessons/42746
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
오름차순 문자열 비교 : 가장 큰 수 구할 때
.sort((a,b) => (b+a) - (a+b)).join("")
내림차순 문자열 비교 : 가장 작은 수 구할 때
.sort((a,b) => (a+b) - (b+a)).join("")
테스트 케이스 주의
[0,0,0,0] => "0"
전체 코드 1) 내림차순 정렬하고 0번째 인덱스가 0인 경우
function solution(numbers){
// numbers.map(c=>c+'') = 각 숫자들을 문자로 변환(1 => '1')
const hignNum = numbers.map(c => c + "").sort((a,b) => (b+a) - (a+b)).join("");
// sort((a,b) => (b+a)-(a+b)) = 문자로 변환된 숫자를 연결하여 비교정렬 ( '3', '30' => ('303')-('330'))
// .join('') = 문자열 합치기
// 모두 0일 때를 고려 "0000000" 내림차순 정렬인데 배열의 인덱스 0번의 값이 0이면 모두 0이다 이때는 숫자 0으로 처리
return hignNum[0] === '0' ? '0' : hignNum;
}
전체 코드 2) Math.max() 메소드로 최대값이 0인 경우
function solution(numbers) {
var answer = '';
const newArr = numbers.map(e => e + "").sort((a,b) => (b+a) - (a+b)).join("");
//console.log(newArr);
return Math.max(...numbers) === 0 ? "0" : newArr;
}
'JavaScript > 알고리즘(JS)' 카테고리의 다른 글
[프로그래머스 레벨1] 체육복 [Javascript/ 그리디] (0) | 2023.03.21 |
---|---|
[프로그래머스 레벨2] 타켓 넘버 [Javascript/ DFS] (0) | 2023.03.06 |
[프로그래머스 레벨2] H-Index [Javascript/ 정렬] (0) | 2023.03.06 |
[프로그래머스 레벨3] 가장 먼 노드 [Javascript/ BFS] (0) | 2023.03.05 |
[프로그래머스 레벨3] 입국심사 [Javascript/이진탐색] (0) | 2023.03.05 |