[프로그래머스] 가장 큰 수 - JavaScript
프로그래머스 Level 2 - 가장 큰 수
- 문제 분류 : 정렬
- 문제 출처 : 프로그래머스 Level 2 - 가장 큰 수
📌 문제 설명
📌 생각한 풀이 방법 (1차 시도 → 시간 초과)
- DFS로 탐색을 해 모든 경우를 구함
- 해당 경우에 맞게 모든 경우의 수 result에 저장함
- 최대 값을 반환함
📌 풀이
function solution(numbers) {
let visited = Array(numbers.length);
let output = [];
let result = [];
function calculateTime(count) {
if (count === numbers.length) {
let currentValue = "";
for (let i = 0; i < numbers.length; i++) {
currentValue += String(numbers[output[i] - 1]);
}
return result.push(currentValue);
}
for (let i = 0; i < numbers.length; i++) {
if (visited[i]) continue;
visited[i] = true;
output.push(i + 1);
calculateTime(count + 1);
output.pop();
visited[i] = false;
}
}
calculateTime(0);
return Math.max(...result.map((item) => +item)) + "";
}
📌 찾아낸 방법 및 공식
해당 문제의 정렬 방식은
(해당 숫자의 문자 형태 + 다음 숫자의 문자 형태) - (다음 숫자의 문자 형태 + 해당 숫자의 문자 형태)
📌 생각한 풀이 방법 (2차 시도 → 성공)
- 모든 숫자가 0인 경우 0으로 출력하게 한다
- 모든 숫자가 0이 아닌 경우 해당 조건에 맞게 정렬을 한다
- 모든 숫자를 연결하여 최대값을 반환한다
📌 풀이
function solution(numbers) {
let totalSum = 0;
for (let i = 0; i < numbers.length; i++) {
totalSum += numbers[i];
}
if (!totalSum) {
// 모든 숫자가 0인 경우 0으로 출력하게 한다
return "0";
}
return numbers // 모든 숫자가 0이 아닌 경우 해당 조건에 맞게 정렬을 한다
.sort((a, b) => b.toString() + a.toString() - (a.toString() + b.toString()))
.map((number) => number + "")
.join(""); // 모든 숫자를 연결하여 최대값을 반환한다
}
Author And Source
이 문제에 관하여([프로그래머스] 가장 큰 수 - JavaScript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tnehd1998/프로그래머스-가장-큰-수-JavaScript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)