티스토리 뷰
320x100
2021년 2월 15일에 Velog에 작성한 글을 옮겨온 글입니다.
프로그래머스 - 가장 큰 수
풀이
function solution(numbers) {
const answer = numbers.sort((a, b) => (('' + b + a) - ('' + a + b)));
return answer.every(cur => !cur) ? '0' : answer.join('');
}
처음 문제를 딱 봤을 때는 numbers.sort().reverse().join('')을 생각했는데, 이 로직은 예제처럼 [30, 3]이 있을 때, '330'이 아닌 '303'을 리턴하게 됩니다.
문제를 찬찬히 다시 읽어보니 "정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내라."라고 합니다. 그래서 두 숫자를 문자열로 형변환('')하여 이어붙였을 때, 더 큰 수가 나오는 순서로 정렬했습니다. 이 이어 붙여서 정렬하는 아이디어를 떠올리기까지가 어려웠어서 기록으로 남겨둡니다.
테스트 케이스 11번은 케이스를 도저히 모르겠어서 '질문하기'를 참고했습니다. 모든 숫자가 0일 경우([0, 0, 0])에 대한 방어 로직을 추가했는데요. 이 부분을 answer.every(cur => !cur)에서 !answer[0]으로 바꾸면 시간 효율이 좀 더 좋아집니다.
320x100
'개발 > Algorithm' 카테고리의 다른 글
프로그래머스 | [3차] 압축(JavaScript) (0) | 2021.06.23 |
---|---|
프로그래머스 | 신규 아이디 추천(JavaScript) (0) | 2021.06.21 |
프로그래머스 | [카카오 인턴] 키패드 누르기(JavaScript) (0) | 2021.06.18 |
프로그래머스 | 124 나라의 숫자(JavaScript) (0) | 2021.06.16 |
프로그래머스 | 파일명 정렬(JavaScript) (0) | 2021.06.14 |
댓글
최근에 올라온 글
TAG
- JavaScript
- 스터디
- mkdirp
- jest
- ModuleParseError: Module parse failed: Unexpected token
- ECONNRESET
- external editor
- node mkdir -p
- 스토리북 에러
- fs-extra
- sass
- node rm -rf
- 인증
- createAction
- javascript event
- node file package
- 페이지 특정 위치 link
- 자바스크립트
- node cp -r
- 인가
- Storybook Error
- ELIFECYCLE
- file opener preference
- node fs
- rimraf
- Webpack Error
- errno 253
- 프로그래머스
- make-dir
- 웹팩 에러