본문 바로가기

프로그래머스

5/27[문제풀이] 프로그래머스 Lv2 가장 큰 수

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

 

문제풀이

 

1
2
3
4
5
6
7
8
9
10
11
12
function solution(numbers) {
 
    var answer = '';
    
    numbers = numbers.map(e => e + "")
 
    numbers.sort((a,b) => (b+a) - (a+b))
    
    answer = numbers.join('')
    
    return answer[0=== "0" ? "0" : answer;
}
cs

 

문제에서 원하는 것은 변수로 들어오는 배열에 있는 값들로 만들 수 있는 가장 큰 수를 구하는 것이기에 단순히 sort를 사용하여야 겠다고 생각했다. 그런데 그렇게만 생각하니 코드가 너무나 길어지고 효율성 테스트도 통과를 하지 못해서 다시 생각을 바꾸었다.

sort를 쓰되 앞 뒤 숫자들을 붙인 값들을 서로 비교하는 생각으로 코드를 짜니 코드도 간결해지고 통과했다.

 

우선 map 함수로 변수 배열 안에 들어있는 요소들을 문자열로 전환하고 이를 sort를 사용하여 이 문자열들을 앞 뒤로 붙였을 시에 큰 수가 앞으로 오게 정렬을 해주었다. 아 그리고 마지막... 이렇게 했는데 통과가 안되어 한동안 생각하다가 반례가 있다는 것을 깨달았다. 문자열 0인 경우를 생각을 해주지 않은 것이었다. 그래서 return 해주는 것을 위와 같이 바꾸어 마무리 했다.