20164. 홀수 홀릭 호석 - node.js / javascript

윤상준·2022년 6월 30일
0

BOJ - node.js / javascript

목록 보기
49/55
post-thumbnail

문제

내 코드

let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim();

function solution(input) {
  let min = Number.MAX_SAFE_INTEGER;
  let max = Number.MIN_SAFE_INTEGER;

  function count(num) {
    let result = 0;
    for (let x of num) {
      if (Number(x) % 2 !== 0) result++;
    }
    return result;
  }

  function recursion(n, oddCount) {
    oddCount += count(n);
    if (n.length === 1) {
      min = Math.min(min, oddCount);
      max = Math.max(max, oddCount);
      return;
    } else if (n.length === 2) {
      let temp = Number(n[0]) + Number(n[1]);
      recursion(temp.toString(), oddCount);
    } else {
      for (let i = 1; i < n.length; i++) {
        for (let j = i + 1; j < n.length; j++) {
          let temp =
            Number(n.substring(0, i)) +
            Number(n.substring(i, j)) +
            Number(n.substring(j));
          recursion(temp.toString(), oddCount);
        }
      }
    }
  }

  recursion(input, 0);

  return `${min} ${max}`;
}

console.log(solution(input));

깃허브 링크

https://github.com/highjoon/Algorithm/blob/master/BOJ/20164.js

후기

재귀를 활용한 완전 탐색 유형이다.
3자리수 이상일 때 끊는 위치를 모두 시도해봐야한다.
2자리수 일 때 나눠서 합을 구하고
1자리수 일 때 각각 최소값과 최대값을 계속해서 갱신한다.

profile
하고싶은건 많은데 시간이 없다!

0개의 댓글