Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바
- Flutter
- 코드트리
- 시스템콜
- HTML
- corou
- 소켓
- Vue.js
- 오블완
- TiL
- 나만무
- CSS
- JavaScript
- 티스토리챌린지
- 자바스크립트
- 알고리즘
- 스택
- defee
- 리액트
- pintos
- 4기
- 크래프톤 정글
- 사이드프로젝트
- 큐
- 크래프톤정글
- 백준
- 모션비트
- Java
- 핀토스
- userprog
Archives
- Today
- Total
미새문지
프로그래머스 가장 큰 수 본문
728x90
문제
코드
function solution(numbers) {
var answer= '';
const sorted = numbers.map(String).sort((a, b) => (b + a) - (a + b));
answer = sorted.join('');
return answer[0] === '0' ? '0' : answer;
}
해설
numbers배열에 있는 값들을 조합해서 가장 값을 크게 만들면 된다.
배열 sorted에 numbers의 값들을 문자열로 변환해서 임의의 값 중 두 개를 골라 더 큰 값을 가진 쪽으로 정렬을 시킨다.
예제에 있는 [6, 10, 2]로 계산했을 때,
1. 첫 번째 비교
- 정렬 알고리즘에서 a = "6", b = "10"을 선택했다면
- (b + a) = "106", (a + b) = "610"
- "610" > "106"이므로 6이 10보다 앞에 위치한다.
2. 두 번째 비교
- 다음으로 a = "6", b = "2"를 비교했다면
- (b + a) = "26", (a + b) = "62"
- "62" > "26"이므로 2가 6보다 뒤에 위치한다.
3. 마지막 비교
- a = "10", b = "2"를 비교하면:
- (b + a) = "210", (a + b) = "102"
- "210" > "102"이므로 2가 10보다 앞에 위치한다.
따라서 정렬은 [6, 2, 10]이 된다.
해당 방식으로 정렬을 진행한 후 join함수로 배열을 하나의 문자열로 붙인다.
이 후 값을 반환할 때 모든 값이 0이라면 그냥 0을 반환해주는 예외처리까지 해준다.(풀이 사례 중에 예외처리를 안해서 테스트 케이스가 틀렸다는 분이 계셨다.)
728x90
'개발 TIL' 카테고리의 다른 글
Typescript란? (0) | 2025.01.03 |
---|---|
defee headline api 연동 테스트 및 잡담 (0) | 2025.01.02 |
프로그래머스 K번째 수 (0) | 2024.12.23 |
flutter API 연동 방식 (0) | 2024.12.17 |
corou 버그 수정 (0) | 2024.12.10 |