알고리즘 - Lv2.가장 큰 수

윤영훈·2021년 3월 2일
0
post-thumbnail

문제

나의 풀이

문제를 푼 방식

  1. 숫자로 이루어진 배열 원소들 중 숫자 맨 앞자리가 가장 큰 순으로 정렬을 하면 되겠다고 생각하였다.

  2. sort()메서드에 compareFunction을 주지 않음으로써 문자열로 변환된 후 오름차순으로 정렬하게 되었고, reverse()메서드를 사용하여 내림차순으로 다시 변환 후, join()메서드를 사용하여 문자열로 변환 후, 리턴해주었다.

문제점

  • 첫번째 테스트 케이스는 통과하였지만, 두번째 테스트케이스에서 가장 큰값은 9534330 이지만 9534303이 출력되었다.

  • 3이 30보다 유니코드에서 앞서 있기 때문이다.

-> 정렬조건에 대한 부분을 더 상세하게 설정해줘야 했다.

해결법

  • 정렬 조건 바꿔주기 => (b+a)-(a+b)

수정한 코드

sort 메서드의 compareFunction

  1. compareFunction이 제공되지 않은 경우
    => 요소를 문자열로 변환하고 유니코드 코드 포인트 순서로 문자열을 비교하여 정렬합니다. (숫자 정렬에서는 9가 80보다 앞에 오지만 숫자는 문자열로 변환되기 때문에 "80"은 유니코드 순서에서 "9"보다 앞에 옵니다.)
  1. 문자열 대신 숫자를 비교하기 위한 경우
function compareNumbers(a, b) {
  return a - b;
}

0개의 댓글