백준9047 - 6174 node.js 본문
반응형
https://www.acmicpc.net/problem/9047
문제 해결 방식
문제 해결 아이디어는 문제에서 제시된대로 구현하면 되는 문제라 크게 어렵지 않다.
다만, 내림차순 정렬과 오름차순 정렬의 차이를 구한 뒤, 해당 값이 4자릿수가 아닌 경우가 나타날 수 있고 이 부분에 대한 에러처리가 온전히 되지 않으면, 시간 초과로 오답을 받을 수 있다.
(예를 들어, 초깃값이 1000 인 경우, 1000 => 999(1000 - 1) 이므로, 이 경우엔 '0999'로 수정해야 한다는 것.)
전체 소스 코드
const fs = require("fs");
const input = fs
.readFileSync(process.platform === "linux" ? "/dev/stdin" : "입력.txt")
.toString()
.trim()
.split("\n");
function solution(data) {
data.shift();
const result = data.map((el) => act(el));
console.log(result.join("\n"));
}
function act(str) {
let cnt = 0;
while (str !== "6174") {
const arr = str.split("").map(Number);
const [max, min] = [
sortArrayToOrder(arr, false),
sortArrayToOrder(arr, true),
];
const temp = String(max - min).padStart(4, "0");
str = temp;
cnt++;
if (str === "6174") break;
}
return cnt;
}
function sortArrayToOrder(arr, order) {
const temp = order ? arr.sort((a, b) => a - b) : arr.sort((a, b) => b - a);
return temp.map(String).join("");
}
solution(input);
반응형
'개발 > algorithm' 카테고리의 다른 글
백준21938 - 영상처리 (BFS) node.js (0) | 2024.04.08 |
---|---|
백준16139 - 인간-컴퓨터 상호작용 (누적합) node.js (0) | 2024.04.02 |
백준2668 - 숫자고르기 (DFS) node.js (0) | 2024.03.30 |
백준21316 - 스피카 (그래프) node.js (1) | 2024.03.28 |
백준18111 - 마인크래프트 (완전탐색) node.js (0) | 2024.03.26 |
Comments