Tesseractjh
한 걸음씩
Tesseractjh
전체 방문자
오늘
어제
  • 전체 (293)
    • IT (30)
      • JavaScript (7)
      • TypeScript (5)
      • React (5)
      • Next.js (3)
      • MongoDB (2)
      • Webpack (2)
      • HTML & CSS (1)
      • Git (0)
      • AWS (1)
      • 기타 (4)
    • 연습장 (259)
      • 백준(BOJ) 문제풀이 (185)
      • 프로그래머스 문제풀이 (61)
      • LeetCode 문제풀이 (2)
      • HackerRank 문제풀이 (7)
      • 낙서장 (3)
      • 기타 (1)
    • 프로젝트 (3)
      • 지뢰피하기 (1)
      • 키릴-라틴 문자 변환기 (1)
      • Flex & Grid (1)
    • 멋쟁이사자처럼 프론트엔드 스쿨 1기 (1)
      • 일기 & 회고록 (1)

인기 글

티스토리

hELLO · Designed By 정상우.
Tesseractjh

한 걸음씩

연습장/백준(BOJ) 문제풀이

[백준 11052] 카드 구매하기 with Python

2021. 8. 25. 11:10

문제 링크

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

 

11052번: 카드 구매하기

첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000)

www.acmicpc.net

풀이

import sys

N = int(sys.stdin.readline())
card = [0] + list(map(int, sys.stdin.readline().split()))
dp = [0]*(N+1)
dp[1] = card[1]
for i in range(2, N+1):
    highest = 0
    for j in range(1, i//2 + 1):
        if dp[j] + dp[i-j] > highest:
            highest = dp[j] + dp[i-j]
    dp[i] = max(card[i], highest)

print(dp[N])

dp[N]은 N개의 카드를 구매하는 최대 비용이다.

N이 2 이상일 때, dp[N]은 아래와 같이 나타낼 수 있다.

 

dp[n] = max(card[n], dp[n-1] + dp[1], dp[n-2] + dp[2], dp[n-3] + dp[3], ... , dp[n-n//2] + dp[n//2])

 

예를 들어 dp[8]을 구하고자 한다면,

 

- 8장의 카드가 들어 있는 카드팩을 사는 경우 비용: card[8]

- 7장의 카드를 사는 최대 비용 + 1장의 카드를 사는 최대 비용: dp[7] + dp[1]

- 6장의 카드를 사는 최대 비용 + 2장의 카드를 사는 최대 비용: dp[6] + dp[2]

- 5장의 카드를 사는 최대 비용 + 3장의 카드를 사는 최대 비용: dp[5] + dp[3]

- 4장의 카드를 사는 최대 비용 * 2 : dp[4] + dp[4]

 

이 값들 중 최댓값을 구하면 된다.

저작자표시 비영리 (새창열림)

'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글

[백준 5525] IOIOI with Python  (0) 2021.08.28
[백준 17626] Four Squares with Node.js  (1) 2021.08.25
[백준 1541] 잃어버린 괄호 with Node.js  (0) 2021.08.24
[백준 1931] 회의실 배정 with Node.js  (0) 2021.08.24
[백준 1149] RGB거리 with Node.js  (0) 2021.08.23
    '연습장/백준(BOJ) 문제풀이' 카테고리의 다른 글
    • [백준 5525] IOIOI with Python
    • [백준 17626] Four Squares with Node.js
    • [백준 1541] 잃어버린 괄호 with Node.js
    • [백준 1931] 회의실 배정 with Node.js
    Tesseractjh
    Tesseractjh
    바닐라 자바스크립트를 좋아하는 개발자입니다

    티스토리툴바