본문 바로가기
코딩테스트

[1일1코👨🏻‍💻] Lv.2 가장 큰 수[정렬].js - 프로그래머스

by Jacob93 2020. 9. 8.

20.09.07

출처 : 프로그래머스

📝문제

https://programmers.co.kr/learn/courses/30/lessons/42746

✏️해답

function solution(numbers) {
    var answer = numbers.map(c => c+'').sort((a,b)=>(b+a)-(a+b)).join('');

    return answer[0]=='0'?'0':answer;
}

회고🧐

완전 짧은 코드로 끝낼 수 있었는데, map과 sort()안에 정의되는 함수를 이해하지 못해서 못푼문제. sort()와 map 정리하기!

✅ 학습

1. Sort() 안에 들어가는 것의 의미.

  • 그 전 문제들을 풀면서 알게된 것
    arr.sort(function(a,b){return b-a}) /// 내림차순 정렬 [5,4,3,2,1]
    arr.sort(function(a,b){return a-b} /// 오름차순 정렬 [1,2,3,4,5]

Sort() 함수 안에 들어가는 반환값에 따라 정렬되는 것이 달라진다.

  • function(a,b)의 return값 > 0 : b를 a보다 낮은 인덱스로 정렬한다.(반환값이 양수면 b가 앞에오고)
  • function(a,b)의 return값 < 0 : a를 b보다 낮은 인덱스로 정렬한다. (반환값이 음수면 a가 앞에온다)
  • function(a,b)의 return값 == 0 : a,b를 그대로 둔다.

2. map() 함수

map()메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다.

arr = [1,2,3,4]; 
arr = arr.map(x=>x+''); // ["1","2","3","4"] 
arr = arr.map(x=>x+10);  // ["11","12","13","14"]

댓글