본문 바로가기

코딩테스트/알고리즘

(4)
2차원DP - 내리막 📝 내리막길- 2차원 동적 프로그래밍 문제 해결2차원 테이블에서 [0 , 0] 에서 부터 시작하여 우측하단 Y,X에 대해 도달 할 수 있는 경우의 수 를 구하는 문제이다.  📌 문제 조건&설명Input 값으로 X , Y 테이블의 크기가 주어지며, 테이블 좌표에 대한 값이 주어진다.내리막길의 시작은 [ 0 , 0 ] 에서 부터 시작한다.현재 좌표에서 이동할 때 Source 자연수와 Target 자연수를 비교하여 Src > Target 이면 좌표이동 가능테이블의 가장 우측 하단 좌표에 도달 할 수 있는 경우의 수를 구한다.🗒️ 접근방식상,하,좌,우 좌표 이동 제약에 대한 조건 확인 const which = [ // 방향이동할 좌표 선정 [0, 1], // → [0, -1],..
DP - RGB거리 백준(1149) 📝RGB거리- 동적 프로그래밍 문제 해결RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다.집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 📌 문제 조건&설명1번 집의 색은 2번 집의 색과 같지 않아야 한다.N번 집의 색은 N-1번 집의 색과 같지 않아야 한다.i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다.즉, 집은 N개 있고 , 각각의 집을 RGB중 하나로 칠한다. + 1번 ( R ) , 2번 ( R ) 중복되게 칠하면안됨! 🗒️   접근방식  DP[0] 에 기본 R..
DP-피보나치 타일링 백준(11726) 📝 2N 타일링- 동적 프로그래밍 문제 해결2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.  📌 문제 조건&설명첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 🗒️ 접근방식피보나치 수열을 생각해보자.(0,1) 이 있다고 생각하고 이것을 쭉쭉 계속 더해보자 ( 규칙을 발견하자 )0+1=1      ➡️  [0]1+1=2      ➡️  [1] 1+2=3      ➡️  [2] 3+2=5      ➡️  [3]        5+3=8      ➡️  [4] 방식 1. [N] 값을 찾으려면?..
DP - 백준 1463 📝 1로 만들기 - 동적 프로그래밍 문제 해결정수를 1로 만드는 최소 연산 횟수를 구하는 문제 DP로 해결 1463 바로가기 📌 문제 설명주어진 정수 X에 대해 다음 세 가지 연산이 가능합니다:X가 3으로 나누어 떨어지면, 3으로 나누기X가 2로 나누어 떨어지면, 2로 나누기1을 빼기💡 해결 방법// 입력 받기const input = Number(prompt());const dp = new Array(input + 1).fill(0);// DP 배열 초기화dp = 0; // 1은 연산 필요 없음// Bottom-up 방식으로 최소 연산 횟수 계산for (let i = 2; i 🔍 동작 원리초기 설정dp[i]: i를 1로 만드는데 필요한 최소 연산 횟수dp = 0으로 초기화 (기저 사례)각 숫자별 ..