문제풀이
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 해주는 것을 위와 같이 바꾸어 마무리 했다.
'프로그래머스' 카테고리의 다른 글
5/31[문제풀이] 프로그래머스 Lv2 기능개발 (0) | 2021.05.31 |
---|---|
5/28[문제풀이] 프로그래머스 Lv2 타켓 넘버 (0) | 2021.05.28 |
5/26[문제풀이] 프로그래머스 Lv2 최솟값 만들기 (0) | 2021.05.26 |
5/25[문제풀이] 프로그래머스 Lv2 피보나치 수 (0) | 2021.05.25 |
5/24[문제풀이] 프로그래머스 Lv2 2개 이하로 다른 비트 (0) | 2021.05.24 |