백준14382 - 숫자세는 양 (set) node.js 본문
반응형
https://www.acmicpc.net/problem/14382
문제 해결 방식
입력값 x가 존재한다고 할 때, x * i (이때 i는 1부터 계속 증가)를 구해나가며, 이 해당 값을 문자값으로 형변환하고 분할하여 set에 추가하는 방식으로 구현했다.
여기서 set은 중복된 원소를 제거하기 때문에, set의 크기가 10인 경우는 곧 0 ~ 9까지의 원소가 모두 등장한 상황이 된다.
이때는 반복문을 중단시켜 가장 마지막에 호출된 x * i 를 정답으로 출력했다.
입력값 x가 0인 경우는 어떤 수를 계속 곱해도 0이라 1 ~ 9까지의 원소가 등장할 수 없기 때문에, 바로 문제에서 제시된 'INSOMNIA'를 출력하면 된다.
전체 소스 코드
const fs = require("fs");
const input = fs
.readFileSync(process.platform === "linux" ? "/dev/stdin" : "입력.txt")
.toString()
.trim()
.split("\n");
function solution(data) {
const [n, ...arr] = data.map(Number);
const result = arr.map((el, idx) => {
return `Case #${idx + 1}: ${act(el)}`;
});
console.log(result.join("\n"));
}
function act(x) {
if (x === 0) return "INSOMNIA";
const set = new Set();
let i = 1;
let last = 0;
while (set.size !== 10) {
const temp = x * i;
const split = String(temp).split("");
split.forEach((el) => set.add(el));
last = temp;
i++;
}
return last;
}
solution(input);
반응형
'개발 > algorithm' 카테고리의 다른 글
백준17887 - 숨바꼭질 6 (유클리드 호제법) node.js (0) | 2024.03.24 |
---|---|
백준5637 - 가장 긴 단어 node.js (0) | 2024.03.22 |
백준22252 - 정보 상인 호석 (최대 힙, 해시) node.js (0) | 2024.03.18 |
백준15702 - 중간고사 채점 node.js (0) | 2024.03.16 |
백준1895 - 필터 (완전탐색) node.js (0) | 2024.03.14 |
Comments