https://www.acmicpc.net/problem/2156
2156번: 포도주 시식
효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규
www.acmicpc.net
- 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다.
1. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다.
2. 연속으로 놓여 있는 3잔은 모두 마실 수는 없다.
- 1부터 n까지의 번호가 붙어 있는 n개의 포도주 잔이 순서대로 테이블 위에 놓여 있고, 각 포도주 잔에 들어있는 포도주의 양이 주어졌을 때, 효주를 도와 가장 많은 양의 포도주를 마실 수 있도록 하는 프로그램
문제 풀이
[백준] 2156번. 포도주 시식
PS
velog.io
[C언어 백준 풀이][Silver I] 2156번 : 포도주 시식 / 10844번 : 쉬운 계단 수 / 14888번 : 연산자 끼워넣기 (tistory.com)
[C언어 백준 풀이][Silver I] 2156번 : 포도주 시식 / 10844번 : 쉬운 계단 수 / 14888번 : 연산자 끼워넣기
이 포스트에서는 프로그래밍 문제 사이트 백준 Online Judge의 Solved.ac 기준 난이도 Silver I에 해당하는 문제들인 2156번 : 포도주 시식, 10844번 : 쉬운 계단 수, 14888번 : 연산자 끼워넣기를 풀이해보도
restudycafe.tistory.com
memo[n] = i번째 잔까지 탐색했을 떄 마실 수 있는 최대 포도주의 양
podoju[n] = 각 포도주의 양
i번째 와인의 최대치를 선택하는 점화식
1) n번째 와인을 선택하지 않는 경우
memo[i] = memo[i-1]
2) n-1번째 와인을 선택하지 않는 경우
memo[i] = memo[i-2] + memo[i]
3) n-2번째 와인을 선택하지 않는 경우
memo[i] = memo[i-3] + memo[i-1] + memo[i]
정답
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main
{
static int podoju[];
static int memo[];
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
podoju = new int[n+1];
memo = new int[n+1];
for(int i=1; i<=n; i++)
{
StringTokenizer st = new StringTokenizer(br.readLine());
podoju[i] = Integer.parseInt(st.nextToken());
}
memo[1] = podoju[1];
if(n>1)
{
memo[2] = podoju[1] + podoju[2];
}
for(int i=3; i<=n; i++)
{
memo[i] = Math.max(memo[i-1], Math.max(memo[i-2]+podoju[i], memo[i-3]+podoju[i-1]+podoju[i]));
}
bw.write(memo[n]+"");
bw.flush();
bw.close();
}
}
'Java > 백준' 카테고리의 다른 글
[JAVA] 백준 11054 가장 긴 바이토닉 부분 수열 (1) | 2024.02.28 |
---|---|
[JAVA] 백준 11053 가장 긴 증가하는 부분 수열 (0) | 2024.02.28 |
[JAVA] 백준 10844 쉬운 계단 수 (0) | 2024.02.27 |
[JAVA] 백준 1463 1로 만들기 (0) | 2024.02.27 |
[JAVA] 백준 2579 계단 오르기 (0) | 2024.02.27 |