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 |
댓글