[algorithm/programmers] 가장 큰 수

stella·2020년 6월 22일

algorithm

목록 보기
6/7

가장 큰 수

문제

가장 큰 수

풀이

function solution(numbers) {      
    const answer = numbers.map(e => e.toString()).sort((a, b) => (b + a) - (a + b)).join('')
    
    return parseInt(answer) ? answer : '0';
}
  • 처음엔 123/132/213/231/321/312... 이런식으로 전부 재귀함수를 돌려서 조합을 한 후에 비교 하려고 했다. 순열조합을 찾고 수학문제를 풀고 난리를 쳤음
  • 그런데 테스트 케이스는 통과하는데 제출하니 모두 실패였다.
  • 문자열과 정렬에 촛점을 맞췄다
  • 문자열로 변환한 후 (왜냐면 6과 10을 연결했을때 문자열이어야 연산이 안되므로)
    comparefunction을 내림차순으로 설정했다. 원래 단일 문자 비교면 b - a 여야 하나 (b + a) - (a + b)로 한 이유는 인접한 숫자와의 문자결합을 통해 어느것이 큰 지 유추하기 위함이다
    예를 들면 6, 10 을 비교했을때 10이 더 크면 나중에 순서가 106으로 나올텐데. 실제론 610이 더 크니까 ㅇㅅㅇ
  • 그리고 0만 있을 경우를 고려하여 0이 나열되면 하나로 리턴하게 해 주었다 (ex => '0000') 큰 숫자를 만들면 사실 0이 제일앞에 올 수 가없다. 0이 젤 앞에 온다는건 그냥 몽땅 0이란 소리다.
profile
겔름뱅이

0개의 댓글