상세 컨텐츠

본문 제목

백준 2231: 분해합

밀라 알고리즘 스터디

by qkrtnals 2025. 1. 6. 18:13

본문

💡기본 정보

유형
: 브루트포스
풀이 날짜
: 2025년 01월 06일 
풀이방법 한줄 요약
: for문을 통해서 합에 자연수를 계속해서 더하다가 합과 N이 같으면 분해합 N의 생성자이므로 answer이 됨 계속해서 N이랑 같은 경우에 더함

 

💡문제에서 구해야 할 것
N의 분해합 : N과 N을 이루는 각 자리수의 합 
어떤 자연수 M의 분해합이 N인 경우 -> N의 생성자 
ex. 245 의 분해합 = 245 + 2 + 4 + 5 = 256
      -> 즉 245는 256의 생성자 

  - 입력 : 첫째 줄에 자연수 N이 주어짐
    출력 : 생성자가 없는 경우에는 0을 출력

 

💡알고리즘 설계
- 자연수 N 입력 받기 

- 합에 자연수를 계속해서 더하다가 합과 N이 같으면 분해합 N의 생성자이므로 answer이 됨 계속해서 n이랑 같은 경우에 더함
- 생성자 중 제일 작은 숫자 출력

 

💡CODE

const fs = require("fs");

const input = fs.readFileSync(0, "utf8").toString();
const n = parseInt(input);
function solution(n) {
  let answer = 0;
  for (let i = 1; i < n; i++) {
    let candidate = i;
    let sum = 0;
    while (candidate > 0) {
      sum += candidate % 10;
      candidate = Math.floor(candidate / 10);
    }
    sum += i;
    if (sum == n) {
      answer = i;
      break;
    }
  }
  return answer;
}
console.log(solution(n));

 

💡시간복잡도

 

💡 틀린 이유 & 틀린 부분 수정

런타임 에러 
 : let answer=0; 을 깜빡하고 안 적음 

 

💡 다른 풀이 or 기억할정보

const fs = require('fs');

const input = fs.readFileSync(0,"utf8").toString();
javascript로 알고리즘 문제를 푸는 경우에는 필수적으로 들어가야하는 문구임. 

 

관련글 더보기