728x90
📍 프로그래머스 2단계 - 가장 큰 수
정수를 이어 붙일 때 사칙연산을 하는 게 아니기 때문에 map
함수를 이용하여 numbers
를 모두 String
으로 변경해준다. 이후에 sort
함수를 이용하여 인자끼리 대소관계를 비교해준다. 여기서 주의할 점은 비교 순서를 헷갈리지 말아야 한다. 만약, numbers
가 [6, 10, 2]
가 주어지면 첫번째 비교대상에서 인자 a
는 10
, b
는 6
이다. 따라서 b+a
는 610
이고, a+b
는 106
이다. 서로의 값을 빼면 양수이기 때문에 순서를 유지하고 다음 차례로 넘어간다. 만약, 서로의 값을 뺐을 때 음수라면 위치를 바꿔준다.
마지막으로 입력이 모두 0일 때가 있는데, 이때는 Number
형태로 변환했을 때 값이 0
인지 구별하면 된다.
728x90
function solution(numbers) {
const answer = numbers
.map(String)
.sort((a, b) => (b + a) - (a + b))
.join("");
return +answer === 0 ? "0" : answer;
}
반응형
'Algorithm > 프로그래머스(Programmers)' 카테고리의 다른 글
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 큰 수 만들기 (0) | 2022.03.25 |
---|---|
[ 자바스크립트(JavaScript) ] 프로그래머스 level3 - 네트워크 (0) | 2022.03.23 |
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 올바른 괄호 (0) | 2022.03.23 |
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 오픈채팅방 (0) | 2021.11.08 |
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 다리를 지나는 트럭 (0) | 2021.10.26 |
댓글