본문 바로가기

728x90

다이나믹 프로그래밍

(2)
[백준] 17070번 파이프 옮기기 1 [Python] - 다이나믹 아래 규칙에 의해서 NxN 격자판에서 $($1, 1$)$에서 $($N, N$)$으로 파이프를 연결하는 경우의 수를 구하는 문제, 불가능할 경우 0을 출력 처음에는 $($1, 1$)$, $($1, 2$)$에 걸친 파이프가 놓여있다. 파이프를 이동하려면 위 그림처럼 가로는 오른쪽, 세로는 아래, 대각선은 오른쪽, 아래, 오른쪽 아래에 아무것도 없어야 합니다. 격자 내에 벽이 존재할 수 있습니다. 더보기 문제 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 $(r, c)$로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다. 오늘은 집 ..
[백준] 1463번 1로 만들기 [Python] - 다이나믹 X를 3으로 나누거나 2로 나누거나 1을 빼서 가장 빠르게 1로 만드는 횟수 구하는 문제 더보기 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. https://www.acmicpc.net/problem/1463 덱을 이용해서 각 연산을 한 결과를 저장하고, 가장 먼저 연산한 수를 꺼내서 1이 될 때까지 반복합니다. 0으..