미새문지

프로그래머스 가장 큰 수 본문

개발 TIL

프로그래머스 가장 큰 수

문미새 2024. 12. 23. 12:34
728x90

문제

코드

function solution(numbers) {
    var answer= '';
    const sorted = numbers.map(String).sort((a, b) => (b + a) - (a + b));
    answer = sorted.join('');
    
    return answer[0] === '0' ? '0' : answer;
}

 

해설

numbers배열에 있는 값들을 조합해서 가장 값을 크게 만들면 된다. 

배열 sorted에 numbers의 값들을 문자열로 변환해서 임의의 값 중 두 개를 골라 더 큰 값을 가진 쪽으로 정렬을 시킨다.

예제에 있는 [6, 10, 2]로 계산했을 때,

1. 첫 번째 비교

  • 정렬 알고리즘에서 a = "6", b = "10"을 선택했다면
    • (b + a) = "106", (a + b) = "610"
    • "610" > "106"이므로 6이 10보다 앞에 위치한다.

2. 두 번째 비교

  • 다음으로 a = "6", b = "2"를 비교했다면
    • (b + a) = "26", (a + b) = "62"
    • "62" > "26"이므로 2가 6보다 뒤에 위치한다.

3. 마지막 비교

  • a = "10", b = "2"를 비교하면:
    • (b + a) = "210", (a + b) = "102"
    • "210" > "102"이므로 2가 10보다 앞에 위치한다.

따라서 정렬은 [6, 2, 10]이 된다.

 

해당 방식으로 정렬을 진행한 후 join함수로 배열을 하나의 문자열로 붙인다.

이 후 값을 반환할 때 모든 값이 0이라면 그냥 0을 반환해주는 예외처리까지 해준다.(풀이 사례 중에 예외처리를 안해서 테스트 케이스가 틀렸다는 분이 계셨다.)

 

 

 

 

728x90

'개발 TIL' 카테고리의 다른 글

Typescript란?  (0) 2025.01.03
defee headline api 연동 테스트 및 잡담  (0) 2025.01.02
프로그래머스 K번째 수  (0) 2024.12.23
flutter API 연동 방식  (0) 2024.12.17
corou 버그 수정  (0) 2024.12.10