문제 https://school.programmers.co.kr/learn/courses/30/lessons/118667?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 길이가 같은 두 개의 큐에서 배열의 첫 번째 원소를 다른 배열에 마지막에 넣는 과정을 반복했을 때 두 큐의 합이 같아지기 위한 최소 작업 횟수를 구하는 문제이다. 처음에는 이해가 어려워서 해당 블로그의 그림을 참고하였다. queue1과 queue2를 합친 하나의 배열 queue를 만든다. p1을 queue1의 시작점(0)으로, p2를 queue2의 ..
문제 철수는 계단을 오를 때 한 번에 한 계단 또는 두 계단씩 올라간다. 만약 총 4계단을 오른다면 그 방법의 수는 1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2 로 5가지이다. 그렇다면 총 N계단일 때 철수가 올라갈 수 있는 방법의 수는 몇 가지인가? 풀이 /** * 다이나믹 프로그래밍(동적 계획법) * - 점화식(관계식)을 만드는 것이 중요 * - 문제를 작은 단위로 쪼개서 구하고, 이걸 기록해뒀다가 문제 범위(데이터 범위) 넓히기 * - dy[n] = dy[n-1] + 3처럼 관계를 구한다. * - 많은 문제를 풀어봐야 한다. */ function solution(n) { const dy = Array.from({ length: n + 1 }).fill(0); dy[1] = 1; dy..
문제 https://www.acmicpc.net/problem/1325 row.split(" ").map(Number)); let graph = Array.from({ length: n + 1 }, () => []); let hacked = Array.from({ length: n + 1 }, () => 0); for (let [s, e] of pairs) { graph[e].push(s); } // 각 노드에서 해킹할 수 있는 컴퓨터 수 세기 for (let i = 1; i 0); const q = new Queue(); let cnt = 1; let max = Number.MIN_SAFE_INTEGER; ch[i] = 1; q.push(i); while (!q.isEmpty()) { const v =..