본문 바로가기

코딩/알고리즘

백준) 2231 - 분해합 JS

📌 문제 링크

https://www.acmicpc.net/problem/2231


📌 문제 탐색하기

  • 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성
  • 생성자가 없는 경우에는 0을 출력

시간복잡도

  • O(nlogn)

알고리즘 선택

  • 완전 탐색

📌 코드 설계하기

  1. for문으로 입력값을 1씩 줄이면서 분해합이 주어진 값과 일치하는지 확인, 맞다면 `answer`배열에 삽입
  2. 빈 배열이라면 0을 출력하고 아니면 배열의 가장 작은 값을 출력

📌 시도 회차 수정 사항 (Optional)

1회차

  • `i`는 `n`이라고 했으면서 정작 for문 내부에서는 `i`를 사용할 생각을 안하고 `input`을 넣어서 오류를 내고 있었다..🤦🏻‍♀️

📌 정답 코드

//https://www.acmicpc.net/problem/2231
export {};

const fs = require("fs");
const filePath =
  process.platform === "linux" ? "/dev/stdin" : __dirname + "/input.txt";
const input = fs.readFileSync(filePath);
const n = Number(input);

let answer = Infinity;
for (let i = n; i > 0; i--) {
  const splittedNum = i.toString().split("").map(Number);
  const sum = i + splittedNum.reduce((x, y) => x + y, 0);
  if (sum === n) {
    answer = Math.min(answer, i);
  }
}
console.log(answer === Infinity ? 0 : answer);

'코딩 > 알고리즘' 카테고리의 다른 글

백준) 18258 - 큐2 JS  (0) 2024.11.17
백준) 10828 - 스택 JS  (0) 2024.11.16
백준) 2798 - 블랙잭 JS  (0) 2024.11.14
백준) 2587 - 대표값2  (1) 2024.11.13
백준) 2750 - 수 정렬하기 JS  (0) 2024.11.12