DP 13

[백준 *Java] - RGB거리2 (17404)

RGB 거리2 17404번: RGB거리 2 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 문제 설명 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1. 1번 집의 색은 2번, N번 집의 색과 같지 않아야 한다. 2. N번 집의 색은 N-1번, 1번 집의 색과 같지 ..

PS/백준 2022.03.29

[백준 *Java] - 타일 채우기 (2133)

타일 채우기 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net 문제 설명 3 X N 크기의 벽을 2x1, 1x2 크기의 타일로 채우는 경우의 수를 구해보자. 입력 첫째 줄에 N(1 그려보면 3개가 나옵니다. 따라서, DP[2]=3 입니다. 미리 초기화를 시킬 수 있습니다. N이 4 일 때, 타일(3x2) 2개 --> 3 * 3 = 9개 타일(3x4) 1개 --> 특수 케이스 2개 -> 11개 N이 6 일 때, 타일(3x2) 3개 --> 3 * 3 * 3 = 27개 타일(3x4) 1개 + 타일(3x2) 1개 --> 특수케이스2개 (타일[3x4]) * 3 = 6개 타일(3x2) 1개 + 타일(3x4) 1개 --> 3 * 특수..

PS/백준 2022.03.28

[백준 *Java] - 연속합2 (11398)

연속합 2 문제보기 13398번: 연속합 2 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 설명 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합중 가장 큰 합을 구하려고 한다. 단, 수는 한개 이상 선택해야 한다. 또 수열에서 수를 하나 제거할 수 있다.(제거하지 않아도 된다.) 예를 들어, 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 수를 제거하지 않았을 때의 정답은 12 + 21인 33이 정답이 된다. 만약,..

PS/백준 2022.03.28

[백준 *Java] - 가장 긴 바이토닉 부분 수열 (11054)

가장 긴 바이토닉 부분 수열 문제보기 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 문제 설명 수열 S가 어떤 수 S(k)를 기준으로 S1 S(k+1) > S(n-1) > S(n) 을 만족한다면, 그 수열을 바이토닉 수열이라고 한다. 예를 들어, {10, 20, 30, 25, 20} {10, 20, 30, 40} {50,40,25,10} 은 바이토닉 수열이지만, {1, 2, 3, 2, 1, 2, 3, 2, 1} {10, 20, 30, 40, 20, 30} 은 바이토닉 수열이 아니다..

PS/백준 2022.03.27

[백준 *Java] - 가장 큰 증가 부분 수열 (11055)

가장 큰 증가 부분 수열 문제보기 11055번: 가장 큰 증가 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수 www.acmicpc.net 문제 설명 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수열은 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 이고, 합은 113이다. 입력 첫째 줄에 수열 A의 크..

PS/백준 2022.03.26

[백준 *Java] - 정수 삼각형 (1932)

정수 삼각형 문제보기 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 문제 설명 위 그림은 크키가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서, 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다. ..

PS/백준 2022.03.26

[백준 *Java] - 포도주 시식 (2156)

포도주 시식 문제보기 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 문제 설명 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다. 1. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야하고, 마신 후에는 원래 위치에 다시 놓아야 한다. 2. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. 효주는 될 수 있는 대로, 많은 양의 포도주를 맛보기 위해서 ..

PS/백준 2022.03.26

[백준 *Java] - 스티커 (9465)

스티커 문제보기 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 문제 설명 상근이의 여동생 상냥이는 문방구에서 2n개를 구매했다. 스티커는 그림(a)와 같이 2행 n열로 배치되어 있다. 상냥이는 스티커를 이용해 책상을 꾸미려 한다. 상냥이가 구매한 스티커의 품질은 매우 좋지 않다. 스티커 한장을 떼면, 그 스티커와 변을 공유하는 스티커는 모두 찢어져서 사용할 수 없게 된다. 즉, 뗀 스티커의 왼쪽, 오른쪽, 위 와래에 있는 스티커는 사용할 수 없게 된다. 모든 스티커를 붙일 수 없게된 상냥이는 각 ..

PS/백준 2022.03.25

[백준 *Java] - 오르막 수 (11057)

오르막 수 문제보기 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수 www.acmicpc.net 문제 설명 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111 은 오르막 수가 아니다. 수의 길이 N이 주어졌을 때, 오르막 수의 개수를 구하는 프로그램을 작성하시오 수는 0으로 시작할 수 있다. 입력 첫째 줄에 N( 1

PS/백준 2022.03.25

[백준 *Java] - 동물원 (1309)

동물원 문제보기 1309번: 동물원 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. www.acmicpc.net 문제 설명 어떤 동물원에 가로로 두칸 세로로 N칸인 아래와 같은 우리가 있다. 이 동물원에는 사자들이 살고있는데 사자들을 우리에 가둘 때, 가로로도 세로로도 붙어 있게 배치할 수는 없다. 이 동물원 조련사는 사자들의 배치 때문에 골머리를 앓고 있다. 동물원 조련사가 머리가 아프지 않도록 우리가 2 * N 배열에 사자를 배치하는 경우의 수가 몇 가지인지를 알아내는 프로그램을 작성해주도록 하자. 사자를 한 마리도 배치하지 않는 경우도 하나의 경우의 수로 친다고 가정하자. 입력 첫째 줄에 우리의 크기 N(i

PS/백준 2022.03.24