[백준] 포도주 시식 (2156)
문제 설명
입력 및 출력
» 입력
첫째 줄에 포도주 잔의 개수 n이 주어진다. (1 ≤ n ≤ 10,000) 둘째 줄부터 n+1번째 줄까지 포도주 잔에 들어있는 포도주의 양이 순서대로 주어진다. 포도주의 양은 1,000 이하의 음이 아닌 정수이다.
» 출력
첫째 줄에 최대로 마실 수 있는 포도주의 양을 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
6 6 10 13 9 8 1 |
33 |
문제 풀이(SWIFT) 1
//
// main.swift
// BOJ2156_SWIFT
//
// Created by choiyoujun on 2022/02/09.
//
let N = Int(readLine()!)!
var arr = [Int](repeating: 0, count: N + 1)
var dp = [Int](repeating: 0, count: N + 1)
for i in 1...N {
arr[i] = Int(readLine()!)!
}
if N >= 1 {
dp[1] = arr[1]
}
if N >= 2 {
dp[2] = dp[1] + arr[2]
}
if N > 2 {
for i in 3...N {
dp[i] = max(arr[i] + dp[i - 2], arr[i] + arr[i - 1] + dp[i - 3])
dp[i] = max(dp[i - 1], dp[i])
}
}
print(dp[N])