단민
개발자 단민
단민
전체 방문자
오늘
어제
  • ALL (77)
    • Experience (17)
      • 인턴 회고 (13)
      • 외부 활동 (4)
    • Life (2)
    • Dev (20)
      • 개발 (15)
      • 알고리즘 (5)
    • Book (38)
      • 교양 기르기 (2)
      • 이펙티브 타입스크립트 (完) (13)
      • 객체지향의 사실과 오해 (完) (8)
      • 오브젝트 (13)
      • 타입스크립트 프로그래밍 (1)
      • 프로그래머의 뇌 (0)
      • 자바스크립트는 왜 그 모양일까? (0)
      • (사용자를) 생각하게 하지 마! (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • Github
  • Portfolio
  • Linkedin

인기 글

최근 글

250x250

티스토리

hELLO · Designed By 정상우.
단민

개발자 단민

[알고리즘] 프로그래머스 / 정렬 / 가장 큰 수 - Javascript
Dev/알고리즘

[알고리즘] 프로그래머스 / 정렬 / 가장 큰 수 - Javascript

2022. 3. 7. 23:38
728x90

문제 설명

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"

코드

function solution(numbers) {
  const answer = numbers
    .map((number) => number.toString())
    .sort((a, b) => b + a - (a + b))
    .join("");

  return answer[0] === "0" ? "0" : answer;
}

숫자를 모두 스트링으로 만든 후, 해당 수와 다음 수를 이어 붙였을 때 더 큰 순서대로 정렬해준 뒤 이어붙여주면 된다.

그냥 answer를 반환해도 통과는 하지만, 혹시 모르게 0만 있는 케이스가 주어질 수도 있기 때문에 처리를 해주었다.

728x90
    'Dev/알고리즘' 카테고리의 다른 글
    • [알고리즘] 프로그래머스 / 정렬 / H-Index - Javascript
    • [알고리즘] 프로그래머스 / 해시 / K번째수 - Javascript
    • [알고리즘] 프로그래머스 / 해시 / 베스트앨범- Javascript
    • [알고리즘] 프로그래머스 / 해시 / 위장 - Javascript
    단민
    단민
    프론트엔드 개발자 이정민입니다.

    티스토리툴바