[2156] 포도주 시식, c++

2021. 2. 7. 00:16·DEV/PS

[2156] 포도주 시식

 

​

https://www.acmicpc.net/problem/2156

 

2156번: 포도주 시식

효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규

www.acmicpc.net

한줄 후기 : 후에 이 문제는 알고리즘 수업 과제로..

 

사실 계단 오르기랑 비슷해 보여서 풀었는데 좀 다르더라 그래서 좀 헤맸음.

#include <iostream>
using namespace std;
int main(){
	int n;
	int arr[10000];
	int dp[10000];
	scanf("%d", &n);
	for(int i=0; i<n; i++){
		scanf("%d", &arr[i]);
	}
	dp[0] = arr[0];
	dp[1] = max(arr[0]+arr[1], arr[1]);
	dp[2] = max(arr[0]+arr[1],max(arr[2],max(arr[0]+arr[2], arr[1]+arr[2])));
	
	for(int i=3; i<n; i++){
		dp[i] = max(dp[i-2]+arr[i], dp[i-3]+arr[i-1]+arr[i]);
		if(dp[i]<dp[i-1])	dp[i] = dp[i-1];
		if(dp[i]<dp[i-2])	dp[i] = dp[i-2];
	}
	printf("%d",dp[n-1]);
	return 0;
}

계단 오르기랑 다른 이유는 계단 오르기는 무조건 마지막 칸을 밟는다. 근데 포도주 시식은 현재 포도주를 안먹어도 상관이 없다. 그래서 그 경우를 또 생각해 줘야함 ㅋ

​

dp 초기값이 중요한데

dp[0] = arr[0];
	dp[1] = max(arr[0]+arr[1], arr[1]);
	dp[2] = max(arr[0]+arr[1],max(arr[2],max(arr[0]+arr[2], arr[1]+arr[2])));

dp[2] 는 바로 전 포도주와 전전 포도주를 먹고 현재 포도주를 안먹는 경우, 현재 포도주만 먹는 경우, 첫번째 포도주 먹고 건너 뛰어서 현재 포도주 먹는 경우, 첫번째 포도주 건너뛰고 두번째 , 현재 포도주 연달아 먹는 경우로 초기화 해줘야 한다.

처음에 초기화에서 모든 경우로 안해서 틀렸음.

그리고 반복문 안에서도 현재 포도주를 안먹는 경우를 생각해 줘야 한다.

흠 너무 어려워 갈 길이 멀다.

​

저작자표시 (새창열림)

'DEV > PS' 카테고리의 다른 글

[14501] 퇴사, c++  (0) 2021.02.07
[11048] 이동하기, c++  (0) 2021.02.07
[2579] 계단 오르기, c++  (0) 2021.02.07
[11403] 경로 찾기, c++  (0) 2021.02.07
[1325] 효율적인 해킹, c++  (0) 2021.02.07
'DEV/PS' 카테고리의 다른 글
  • [14501] 퇴사, c++
  • [11048] 이동하기, c++
  • [2579] 계단 오르기, c++
  • [11403] 경로 찾기, c++
jobchae
jobchae
말하는 감자지만, 코드를 끄적이는 Node.js 백엔드 개발자입니다.
  • jobchae
    JOBCHAE
    jobchae
  • 전체
    오늘
    어제
    • 🚀 JOBCHAE (182)
      • DEV (151)
        • PS (108)
        • Node.js (12)
        • React (3)
        • docker (1)
        • 잡다한 개발 일지 (21)
        • injection (1)
        • JS, TS (3)
        • DB (2)
      • 축구 (0)
      • 일상 (19)
      • 영화 (3)
      • 음악 (8)
  • 블로그 메뉴

    • 💻 Github
    • 🙋🏻 Linkedin
    • 📖 방명록
  • 링크

    • PS Github
  • 공지사항

  • 인기 글

  • 태그

    개발
    nodejs
    백준
    db
    리액트
    BFS
    위상정렬
    렛츠락페스티벌
    DP
    앱잼
    JavaScript
    알고리즘
    boj
    typescript
    일상
    mongoDB
    GitHub
    react
    이분탐색
    회고
    우선순위큐
    SOPT
    Nest.js
    Express
    솝트
    DFS
    슬랙봇
    node.js
    PS
    슬랙
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
jobchae
[2156] 포도주 시식, c++
상단으로

티스토리툴바