[백준 문제풀이] 2231 분해합 (Javascript)

방예서·2022년 5월 24일
0

코딩테스트 준비

목록 보기
10/37

2231 분해합

브루트포스 문제이다.

가장 작은 생성자를 찾는 문제여서 i는 0부터 올라가는 for문 형태로 작성했다.
input과 temp(i+i를 쪼갠 것들의 합)이 같아지면 그것이 가장 작은 생성자일테니까 temp를 result에 넣고 for문을 중단시킨다.

i가 계속 커져서 input과 같아진 경우는 생성자가 없는 경우이기 때문에 result에 0을 넣는다.

// 백준 2231 분해합

const fs = require('fs');
const input = fs.readFileSync("input.txt").toString();

let result = input;

for (let i=0; i<=input; i++) {
  let seperate = String(i).split('');
  let temp = parseInt(i, 10);
  for (let j=0; j<seperate.length; j++) {
    temp += parseInt(seperate[j], 10);
  }
  if (input == temp) {
    result = i;
    break;
  }
  if (i == input) result = 0;
}

console.log(result);

예전에 python으로 풀었을 땐 이렇게 풀었는데 이번에 다시 풀어보려고 하니까 input에서 작아지는 for문을 작성해서 잘 안 풀렸다.
만약에 작아지는 경우로 작성하면 생성자가 없는 경우 i가 0이 될 때까지 for문을 돌려야하기 때문에 너무 비효율적인 것이었다.

profile
console.log('bang log');

0개의 댓글