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

문제 설명

백준 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])

태그:

카테고리:

업데이트: