연습장/백준(BOJ) 문제풀이

    [백준 2447 - Node.js] 별 찍기 - 10

    [백준 2447 - Node.js] 별 찍기 - 10

    🔗 문제 링크 https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net ✏️ 풀이 const N = Number(require('fs').readFileSync('/dev/stdin').toString().trim()); const basicPattern = ['***', '* *', '***']; const getPattern = (n) => { if (n === 3) { return basicPattern; } const ..

    [백준 2470 - Node.js] 두 용액

    [백준 2470 - Node.js] 두 용액

    🔗 문제 링크 https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net ✏️ 풀이 const [N, input] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); const solutions = input .split(' ') .map(Number) .sort((a, b) => a - b); let i = 0; let j = N -..

    [백준 1991 - Node.js] 트리 순회

    [백준 1991 - Node.js] 트리 순회

    🔗 문제 링크 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net ✏️ 풀이 const [N, ...input] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); const nodes = input.map(v => v.split(' ')); class Tree { constructor(value) { this.value = value; this.le..

    [백준 1644 - Node.js] 소수의 연속합

    [백준 1644 - Node.js] 소수의 연속합

    🔗 문제 링크 https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net ✏️ 풀이 const N = Number(require('fs').readFileSync('/dev/stdin').toString().trim()); const isPrime = Array(N + 1).fill(true); isPrime[0] = isPrime[1] = false; for (let i = 2; i N) { sum -= primes[i]; i++; } if (sum === N) { count++; } j++; } console.log(count); 먼저 1부터 N까지의 소수를 모두 구한 ..

    [백준 1806 - Node.js] 부분합

    [백준 1806 - Node.js] 부분합

    🔗 문제 링크 https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N v.split(' ').map(Number)); let sum = 0; let minLength = Infinity; let i = 0; let j = 0; while ..

    [백준 15565 - Node.js] 귀여운 라이언

    [백준 15565 - Node.js] 귀여운 라이언

    🔗 문제 링크 https://www.acmicpc.net/problem/15565 15565번: 귀여운 라이언 꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의 www.acmicpc.net ✏️ 풀이 const [[N, K], dolls] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n') .map(v => v.split(' ').map(Number)); let count = 0; let minCount = Infinity; let i = 0; let j = 0; while (j..

    [백준 20922 - Node.js] 겹치는 건 싫어

    [백준 20922 - Node.js] 겹치는 건 싫어

    🔗 문제 링크 https://www.acmicpc.net/problem/20922 20922번: 겹치는 건 싫어 홍대병에 걸린 도현이는 겹치는 것을 매우 싫어한다. 특히 수열에서 같은 원소가 여러 개 들어 있는 수열을 싫어한다. 도현이를 위해 같은 원소가 $K$개 이하로 들어 있는 최장 연속 부분 수열 www.acmicpc.net ✏️ 풀이 const input = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); const [[N, K], arr] = input.map(v => v.split(' ').map(Number)); const intMap = {}; let maxLength = 0; let i = 0; let..

    [백준 2531 - Node.js] 회전 초밥

    [백준 2531 - Node.js] 회전 초밥

    🔗 문제 링크 https://www.acmicpc.net/problem/2531 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ www.acmicpc.net ✏️ 풀이 const input = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); const [N, d, k, c] = input[0].split(' ').map(Number); const sushi = input.slice(1).map(Number); l..

    [백준 2230 - Node.js] 수 고르기

    [백준 2230 - Node.js] 수 고르기

    🔗 문제 링크 https://www.acmicpc.net/problem/2230 2230번: 수 고르기 N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어 www.acmicpc.net ✏️ 풀이 const [NM, ...input] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); const [N, M] = NM.split(' ').map(Number); const arr = input.map(Number); arr.sort((a, b) => a - b);..

    [백준 6588 - Node.js] 골드바흐의 추측

    [백준 6588 - Node.js] 골드바흐의 추측

    🔗 문제 링크 https://www.acmicpc.net/problem/6588 6588번: 골드바흐의 추측 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 www.acmicpc.net ✏️ 풀이 const input = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n') .map(Number); const primeNums = []; const nums = Array(1_000_000 + 1).fill(true); nums[0] = false; nums[1] ..