알고리즘 수업 - 병합 정렬 1
·
하루 알고리즘(JS)
문제https://www.acmicpc.net/problem/24060 코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');const [N, K] = input[0].split(' ').map(Number);const A = input[1].split(' ').map(Number);let saveCount = 0;let result = -1;function merge_sort(A, p, r) { if (p 문제 해설병합 정렬(Merge Sort)을 수행하면서 K번째 저장되는 수를 추적하는 문제입니다. 따라서 주어진 배열을 병합 정렬하면서, 저장되는 수를 카운트하고 K번째에..
[바미] 재귀의 귀재
·
하루 알고리즘(JS)
문제https://www.acmicpc.net/problem/25501 코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');const T = parseInt(input[0], 10);const cases = input.slice(1);function recursion(s, l, r, count) { count.count++; if (l >= r) return [1, count.count]; else if (s[l] !== s[r]) return [0, count.count]; else return recursion(s, l + 1, r - 1, count)..
[바미] 피보나치 수 5
·
하루 알고리즘(JS)
문제https://www.acmicpc.net/problem/10870코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim();const n = parseInt(input, 10);function fibonacci(n) { if (n === 0) { return 0; } else if (n === 1) { return 1; } else { return fibonacci(n - 1) + fibonacci(n - 2); }}const result = fibonacci(n);console.log(result);문제 해설이번 문제는 출제자가 재귀 함수를..
[바미] 팩토리얼 2
·
하루 알고리즘(JS)
문제https://www.acmicpc.net/problem/27433코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim();const N = parseInt(input, 10);function factorial(n) { if (n === 0) { return 1; } else { return n * factorial(n - 1); }}const result = factorial(N);console.log(result);문제 해설이 문제는 for문으로 해결할 수 있지만 재귀함수를 사용하여 풀 것을 유도하고 있습니다.따라서 주어진 정수 𝑁에 대해 𝑁!을 계산하..
[바미] 약수
·
하루 알고리즘(JS)
문제https://www.acmicpc.net/problem/1037 코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');const numDivisors = parseInt(input[0], 10);const divisors = input[1].split(' ').map(Number);const minDivisor = Math.min(...divisors);const maxDivisor = Math.max(...divisors);const N = minDivisor * maxDivisor;console.log(N);문제 해설주어진 문제는 주어진 진짜 약수들을 통해 원래 수 𝑁..
[바미] 다리 놓기
·
하루 알고리즘(JS)
문제  https://www.acmicpc.net/problem/1010코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');const T = parseInt(input[0], 10);// 이항 계수를 동적 프로그래밍으로 계산하는 함수function binomialCoefficient(n, k) { const dp = Array.from(Array(n + 1), () => Array(k + 1).fill(0)); for (let i = 0; i 문제 해설\[이 문제는 주어진 두 수 N과 K에 대해 이항 계수 \binom{N}{K}를 계산하는 문제입니다.  그러니까 이항..
[바미] 이항 계수 1
·
하루 알고리즘(JS)
문제https://www.acmicpc.net/problem/11050코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split(' ');const N = parseInt(input[0], 10);const K = parseInt(input[1], 10);function factorial(n) { if (n === 0 || n === 1) return 1; let result = 1; for (let i = 2; i 문제 해설이항 계수는 주어진 두 수 𝑁과 𝐾에 대해, 𝑁개의 원소 중 𝐾개를 선택하는 방법의 수를 나타냅니다.이항 계수는 아래와 같은 수식으로 정의됩니다. 위..
[바미] 팩토리얼
·
하루 알고리즘(JS)
문제https://www.acmicpc.net/problem/10872 코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim();const N = parseInt(input, 10);function factorial(n) { if (n === 0) return 1; let result = 1; for (let i = 1; i 문제 해설팩토리얼은 수학적으로 정의된 함수로 특정 양의 정수 𝑁에 대해 𝑁 !은 1부터 𝑁까지의 모든 양의 정수를 곱한 값입니다.이를 수식으로 나타내면 다음과 같습니다.N!=N×(N−1)×(N−2)×…×1또한 팩토리얼은 다음과 같은 재귀적 정의를 가지고 있습니다..
[바미] 녹색거탑
·
하루 알고리즘(JS)
문제https://www.acmicpc.net/problem/24723코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim();const N = parseInt(input, 10);// 내려오는 경우의 수를 계산하는 함수function calculatePaths(N) { if (N === 1) { return 2; } return 2 ** N;}const result = calculatePaths(N);console.log(result);문제 해설녹색거탑을 내려오는 경우의 수를 계산하는 문제입니다.  녹색거탑은 N층이며, 각 층에서 인접한 아래층의 블록으로만 내려올 수 있기 ..
Bami