문제
더보기
문제 설명
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
제한 사항- numbers의 길이는 1 이상 100,000 이하입니다.
- numbers의 원소는 0 이상 1,000 이하입니다.
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
[6, 10, 2] | "6210" |
[3, 30, 34, 5, 9] | "9534330" |
풀이 과정
- 처음엔 진짜 어렵게 풀었다. 몇글자인지까지 생각해서... 그랬더니 테케 다 틀ㄹㅕㅆ다. 아무리 생각해도 다른 방법이 생각나지 않아서 구글링해봤다가 허무해짐.
- 문자열 두개 합쳐본 다음에 더 큰 순서대로 리턴해주면 되는 거였음...
- 근데 문자열 합치면 문자열인데 어케 대소 비교를 하는 거지....? 했는데 하더라.응.... 난 아직도 자바스크립트를 잘 모르겠다 ㅎㅎㅎㅎ
사용한 메서드
- sort, map
전체 코드
function solution(numbers) {
var answer = '';
numbers = numbers.map((n)=> n + '');
numbers.sort((a,b)=>{
return (b+a) - (a+b);
})
numbers[0] === '0' ? answer = '0' : answer = numbers.join('');
return answer;
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스 JS] 가장 가까운 같은 글자 (0) | 2022.12.16 |
---|---|
[프로그래머스 JS] 소수 찾기 : 에라토스테네스의 체 (0) | 2022.12.16 |
[프로그래머스 JS] 베스트 앨범 : 해시 (0) | 2022.12.15 |
[프로그래머스 JS] 위장 : 해시 (0) | 2022.12.15 |
[프로그래머스 JS] 숫자 짝꿍 (0) | 2022.12.15 |