전체 글
-
백준 9251 nodejs백준/다이나믹 프로그래밍 2022. 12. 16. 12:15
문제 https://www.acmicpc.net/problem/9251 풀이 DP와 LCS 알고리즘을 이용한다. (상세 풀이는 해당 블로그 참조) let [A, B] = require('fs').readFileSync('/dev/stdin').toString().split('\n') const [r, c] = [A.length, B.length] const dp = [...Array(r)].map(_ => Array(c).fill(0)) for (let i = 0; i < r; i++) for (let j = 0; j < c; j++) if (A[i] == B[j]) dp[i][j] = (i && j ? dp[i - 1][j - 1] : 0) + 1 else dp[i][j] = Math.max(i ? d..
-
백준 16236 nodejs백준/너비 우선 탐색 2022. 12. 13. 11:50
문제 https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 풀이 BFS를 이용해 먹을 수 있는 물고기와의 거리를 구한다. 해당하는 거리의 좌측 상단 물고기를 찾아서 잡아먹고 Queue를 초기화한다. let [N, ...I] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n') N = +N I = I.map(e => e.split(' ').map(Number)) let..
-
백준 9019 nodejs백준/너비 우선 탐색 2022. 12. 10. 18:04
문제 https://www.acmicpc.net/problem/9019 풀이 BFS를 이용해 A에서 B로 이동하는 최단 경로를 구한다. Array let [T, ...I] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n') const O = [] I.forEach(e => { const [A, B] = e.split(' ').map(Number) const [V, Q] = [Array(10000).fill(0), [[A, '']]] V[A] = 1 let i = 0 while (i < Q.length) { const [curr, comm] = Q[i++] if (curr == B) { O.push(comm) break } co..
-
백준 1107 nodejs백준/브루트포스 알고리즘 2022. 12. 9. 16:07
문제 https://www.acmicpc.net/problem/1107 풀이 이동하는 경우의 수는 총 3가지로 나뉜다. 100번에서 +, - 버튼으로 이동 N보다 작은 가장 가까운 수인 l로 이동 후 + 버튼으로 이동 N보다 큰 가장 가까운 수인 r로 이동 후 - 버튼으로 이동 이 중 최솟값을 구한다. let [N, M, A] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n') A = new Set(A && A.split(' ')) let [l, r, O] = [N, N, [Math.abs(+N - 100)]] const check = x => x.split('').every(e => !A.has(e)) if (M < 10) ..