dp 14

[BOJ] 1463번 : 1로 만들기 (Python)

🔒 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. ⌨ 입력 첫째 줄에 1보다 크거나 같고, 10 ** 6보다 작거나 같은 정수 N이 주어진다. 🖨 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 📚 예제 Ex1) 2 '''python 1 ''' Ex2) 10 '''python 3 ''' 📌 풀이 dp[정수N+1] 행렬을 만든다. (N이 아니라 N+1개의 인덱스를..

[BOJ] 11726번 : 2xn 타일링 (Python)

🔒 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. ⌨ 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 🖨 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 📚 예제 Ex1) 2 2 Ex2) 9 55 📌 풀이 고등학교 때 풀던 확통 문제가 생각나는 문제이다. 수학 문제를 푸는 기분이었다. dp 행렬에 직사각형의 채우는 방법의 수를 저장 할 것이다. 따라서 dp[가로 길이]로 행렬을 만들어준다 가로 길이가 1이면 dp[0] = 1이다. 가로 길이가 2이면 dp[1] = 2이다. 가로 길이가 3이상이면 dp를 식으로 나타 낼..

[BOJ] 2839번 : 설탕 배달

🔒 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. ⌨ 입력 첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000) 🖨 출력 상근이가 배달하는 봉지의 최소 개수를 출력한다...

[BOJ] 2775번 : 부녀회장이 될테야

🔒 문제 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. 이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다. 아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다. ⌨ 입력 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째..