[프로그래머스] 가장 큰 수

Chaejung·2023년 8월 28일
1

알고리즘_JavaScript

목록 보기
9/12

문제

접근 방법

처음에는 브루트포스로 가능한 모든 경우의 수로 조합하여 정렬하는 것을 생각했다.
그런데 중요한 제한 사항인 numbers의 길이가 100,000이기 때문에,
조합을 하면 100,000!, 2.824229407 e+456573라서 시간 초과가 난다.
따라서 이 방법은 적절하지 않아서, O(N)으로 끝낼 수 있는 방법을 고려해야한다.

그래서 어떤 게 더 큰 수 인지 알 수 있는 것으로 고려하면서 정렬할 때 그 순대로 하는 방식을 생각해보았다.

function solution(numbers) {
    numbers.sort((a, b) => {
        const AB = a.toString() + b.toString()
        const BA = b.toString() + a.toString()
        return parseInt(BA) - parseInt(AB)
    })
    if (numbers[0] === 0){
        return '0'
    }
    return numbers.join('').toString()
}
'평균 시간: 56.822ms'
'평균 메모리: 37.260MB'
'최고 시간: 241ms'
'최저 시간: 0.06ms'
'최고 메모리: 45.1MB'
'최저 메모리: 33.5MB'
'시간 표준 편차: 22739.964'
'메모리 표준 편차: 93.594'
profile
프론트엔드 기술 학습 및 공유를 활발하게 하기 위해 노력합니다.

0개의 댓글