728x90
문제
TRY
function solution(numbers) {
// 모든 number들을 string으로 바꿔주고 문자열을 그대로 연결한 수(b+a) - 바꿔 연결한 수(a+b)가 양수이면
// ex) b(3) + a(30) - a(30) + b(3) => 330 - 303 = 양수
// 3 30 순서를 그대로 유지한다.
let temp = numbers.map((a) => String(a)).sort((a, b) => b + a - (a + b));
// 모든 숫자가 0인 경우 000 이 나오지 않게 0을 출력
if (temp.every((a) => a === '0')) {
return '0';
} else {
return temp.join('');
}
}
console.log(solution([6, 10, 2]));
console.log(solution([3, 30, 34, 5, 9]));
console.log(solution([0, 0, 0]));
숫자들을 String으로 바꾼 다음 문자열을 연결했을 때 큰 순서대로 Array.sort()를 해준다.
Array.sort()는 return하는 값이 양수이면 순서를 그대로 유지하고 음수이면 순서를 바꿔준다.
문자열을 그대로 연결한수(b+a) - 바꿔 연결한 수(a+b)를 통해 문자열을 연결했을 때 큰 순서대로 배열을 정렬하고
모든 숫자가 0인 경우를 Array.every() 함수를 사용하여 0으로 바꿔준다.
0이 아닌경우는 Array.join()을 이용하여 배열을 문자열로 바꿔주고 출력한다.
Refactoring
function solution(numbers) {
// 모든 number들을 string으로 바꿔주고 문자열을 그대로 연결한 수(b+a) - 바꿔 연결한 수(a+b)가 양수이면
// ex) b(3) + a(30) - a(30) + b(3) => 330 - 303 = 양수
// 3 30 순서를 그대로 유지한다.
let answer = numbers
.map((a) => String(a))
.sort((a, b) => b + a - (a + b))
.join('');
return answer[0] === '0' ? '0' : answer;
}
console.log(solution([6, 10, 2]));
console.log(solution([3, 30, 34, 5, 9]));
console.log(solution([0, 0, 0]));
첫 풀이와 똑같지만 Array.every()를 사용하지 않고 내림차순으로 배열을 정렬했기에 앞자리가 0인경우
모든 인자가 0이라는 걸 알 수 있어서 삼항연산자를 이용하여
첫번째 인자가 0인 경우 0을 출력하고 아닌경우 answer를 출력하도록 바꿔주었다.
'ALGORITHM > 프로그래머스 With JS' 카테고리의 다른 글
[프로그래머스] H-Index / Javascript (1) | 2021.05.03 |
---|---|
[프로그래머스] 프린터 / Javascript (0) | 2021.05.01 |
[프로그래머스] 기능개발 / Javascript (0) | 2021.04.30 |
[프로그래머스] 다리를 지나는 트럭 / Javascript (0) | 2021.04.29 |
[프로그래머스] 위장 / Javascript (0) | 2021.04.29 |
댓글