본문 바로가기

동적계획법9

[백준] 2579번 : 계단 오르기(JAVA) https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 16단계 동적 계획법 1의 카테고리에 포함되어 있는 문제이다. 오랜만에 푸는 다.. 2020. 2. 25.
[백준] 2156번 : 포도주 시식(JAVA) https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. 효주는 될 수 있는 대로 많은 양의 포도주를 맛보기 위해서 어떤 포도주 잔을 선택해야 할지 고 www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 14단계 동적 계획법 1의 카테고리에 포함되어 있는 문제이.. 2020. 1. 8.
[백준] 1463번 : 1로 만들기(JAVA) https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 14단계 동적 계획법 1의 카테고리에 포함되어 있는 문제이다. 매우 오랜만에 알고리즘 문제를 풀어본다. 마지막으로 푼게 작년이니 말이다... 작년이라고 해봤자 약 20일 전이지만 그래도 열심히 문제를 풀지 않았다는 것에 반성하며 글을 작성한다. 먼저 1을 1로만드는 최솟값은 0이고, 2를 1로 만드는 값은 1, 3도 1, 이제 4부터 3가지 방법으로 나눠서 진행을 시켰다. 3가지 방법을 비교할 수 있는 배열을 만들고, 첫 번째 배열에는 .. 2020. 1. 2.
[백준] 1932번 : 정수 삼각형(JAVA) https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 14단계 동적 계획법 1의 카테고리에 포함되어 있는 문제이다.. 2019. 12. 6.
[백준] 1149번 : RGB거리(JAVA) https://www.acmicpc.net/problem/1149 1149번: RGB거리 RGB거리에 사는 사람들은 집을 빨강, 초록, 파랑중에 하나로 칠하려고 한다. 또한, 그들은 모든 이웃은 같은 색으로 칠할 수 없다는 규칙도 정했다. 집 i의 이웃은 집 i-1과 집 i+1이고, 첫 집과 마지막 집은 이웃이 아니다. 각 집을 빨강으로 칠할 때 드는 비용, 초록으로 칠할 때 드는 비용, 파랑으로 드는 비용이 주어질 때, 모든 집을 칠하는 비용의 최솟값을 구하는 프로그램을 작성하시오. www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 14단계 동적 계획법 1의 카테고리에 포함되어 있는 문제이다. 혼자 해결해보려고 했다가 힘들어서 검색을 통해 이해하고 .. 2019. 12. 4.
[백준] 9095번 : 1, 2, 3 더하기(JAVA) https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 알고리즘 분류 중 다이나믹 프로그래밍의 카테고리에 포함되어 있는 문제이다.. 2019. 12. 1.
[백준] 9461번 : 파도반 수열(JAVA) https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 문제 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. 파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다. N이 주어졌을 때, P(N)을 구하 www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 14단계 동적 계획법 1의 카테고리에 포함되어 있는 문제이.. 2019. 12. 1.
[백준] 1904번 : 01타일(JAVA) https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이의 공부를 방해하기 위해 0이 쓰여진 낱장의 타일들을 붙여서 한 쌍으로 이루어진 00 타일들을 만들었다. 결국 현재 1 하나만으로 이루어진 타일 또는 0타일을 두 개 붙인 한 쌍의 00타일들만이 남게 되었다. 그러므로 지원이는 타일로 더 이상 크기가 N인 모든 2진 수 www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 14단계 동적 계획법 1의 카테고리에 포함되어 있는 문제이다... 2019. 11. 30.
[백준] 1003번 : 피보나치 함수(JAVA) https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 14단계 동적 계획법 1의 카테고리에 포함되어 있는 문제이다. 동적 계획법이란 Dynamic Programming 이라고도 하며 큰 문제를 작은 문제들로 나누어 해결하는 알고리즘이다. 이 문제를 풀고나서 다른 사람들이 푼 방법도 한번 비교해 봤는데 내 생각보다 많이 비슷해서 좀 놀란 문제이다. 나는 2차원 배열을 이용하여 문제를 해결하였으며 최대 40이 입력되므로 40개의 배열만 선언하고 미리 계산해 두는 방식으로 해결.. 2019. 11. 28.