[프로그래머스] 가장 큰 수 - JavaScript
Algorithm
|
2024-09-29
가장 큰 수
프로그래머스 Level 2
📚 문제 설명
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
✅ 제한 조건
numbers의 길이는 1 이상 100,000 이하입니다.
numbers의 원소는 0 이상 1,000 이하입니다.
정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
📜 입출력 예
numbers return [6, 10, 2] "6210" [3, 30, 34, 5, 9] "9534330"
📝 작성 코드
정수로 이루어진 배열 numbers
를 정렬한다. 비교하는 두 요소 a
, b
를 문자열로 변환한 후, 두 가지 조합을 만들어 순서를 비교한다.
strA + strB
와 strB + strA
라는 두 가지 조합을 만들고, 이를 정수로 변환한 다음 더 큰 수가 앞으로 오도록 정렬한다.
이후 정렬된 배열을 순회하며 answer
라는 변수에 담는다. numbers
는 이미 정렬되어 있기 때문에 순서대로 담는다면 가장 큰 수가 만들어진다.
값을 반환할 때는 0인지 아닌지를 고려하여 반환한다.
⏰ 걸린 시간
테스트 1 〉 통과 (169.54ms, 43.4MB) 테스트 2 〉 통과 (93.01ms, 42MB) 테스트 3 〉 통과 (221.89ms, 47MB) 테스트 4 〉 통과 (5.35ms, 36.6MB) 테스트 5 〉 통과 (154.07ms, 45MB) 테스트 6 〉 통과 (133.36ms, 44.3MB) 테스트 7 〉 통과 (0.10ms, 33.4MB) 테스트 8 〉 통과 (0.09ms, 33.5MB) 테스트 9 〉 통과 (0.09ms, 33.5MB) 테스트 10 〉 통과 (0.09ms, 33.4MB) 테스트 11 〉 통과 (0.17ms, 33.5MB) 테스트 12 〉 통과 (0.06ms, 33.4MB) 테스트 13 〉 통과 (0.07ms, 33.5MB) 테스트 14 〉 통과 (0.08ms, 33.6MB) 테스트 15 〉 통과 (0.06ms, 33.6MB)