DS & Algorithm/baekjoon

    [백준] 2231번 분해합 - JavaScript(NodeJS)

    문제 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 코드 function sol(input) { let answer = 0; const len = input.length; const N = +input; const min = input - len * 9; for (let i = min; i s + v, 0); if (num === N) { answer = +str; break; } } return answer; } require("readline") .createInterface..

    [백준] 3055번 탈출 - JavaScript(NodeJS)

    문제 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 코드 const sol = (input) => { let answer = 0; const [R, C] = input[0].split(" ").map(Number); const map = input.slice(1).map((str) => str.split("")); const check = Array(R) .fill() .map((_) => Array(C).fill(0)); let D, S; let water = []; for (let i = 0; i < R; i++) ..

    [백준] 1316번 그룹 단어 체커 - JavaScript(NodeJS)

    문제 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 코드 function sol(input) { let answer = 0; const n = +input[0]; for (let i = 1; i { input.push(line); }) .on("close", () => { console.log(sol(input)); process.exit(); }); 풀이 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. ccazzzzbb는 c,..

    [백준] 1037번 약수 - JavaScript(NodeJS)

    문제 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net 코드 // 1. 최대, 최소값 function sol(input) { const divisors = input[1].split(" "); return Math.min(...divisors) * Math.max(...divisors); } // 2. 정렬을 해서 처음 인덱스, 마지막 인덱스를 이용해도 가능 function sol(input) { const divisors = input[1].split(" ").sort((a, b) => a - b); ..

    [백준] 1152번 단어의 개수 - JavaScript(NodeJS)

    문제 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 www.acmicpc.net 코드 function sol(input) { input = input.trim(); if (input === "") return 0; return input.split(" ").length; } // 백준에서 입력을 받는 코드 require("readline") .createInterface(process.stdin, process.stdout) .on("line", (line) => { console.log(sol(line)); }) .on("clos..

    [백준] 15990번 1, 2, 3 더하기 5 - JavaScript(NodeJS)

    문제 15990번: 1, 2, 3 더하기 5 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 숫자 n을 1,2,3의 합으로 표현하는 경우의 수를 구한다. 1,2,3을 여러 번 사용할 수 있으나, 연속되게 사용하면 안된다. 숫자 4를 표현할 때 1+1+2, 2+2 와 같이 연속되게 같은 숫자를 사용할 수 없다. 이 문제는 dp 유형으로 점화식을 구해야 한다. 우선 1부터 시작해보자. n=1 일 때, 1 n=2 일 때, 2 n=3 일 때, 1+2, 2+1, 3 n=4 일 때, 1+2+1, 1+3, 3+1 n=5 일 때, 1+3+1, 2+1+2, 3+2, 2+3 사실 이렇게만 보면 점화식을 파악하기 ..