[Python] 백준 1106 - 호텔 문제 풀이
Overview
BOJ 1106번 호텔 Python 문제 풀이
분류: Dynamic Programming (동적계획법)
문제 페이지
https://www.acmicpc.net/problem/1106
풀이 코드
from sys import stdin, maxsize
def main():
def input():
return stdin.readline().rstrip()
c, n = map(int, input().split())
promotions = sorted([tuple(map(int, input().split())) for _ in range(n)])
dp = [0] + [1000000] * (c + 100)
res = 1000000
for cost, client in promotions:
for i in range(client, len(dp)):
dp[i] = min(dp[i - client] + cost, dp[i])
if i >= c:
res = min(dp[i], res)
print(res)
if __name__ == "__main__":
main()
다이나믹 프로그래밍을 이용하여 dp
에 고객 i
명이 늘어날 때 최소 비용을 저장한다. 그리고 적어도 c명의 고객이 늘어나기 위한 최소 비용을 구하기 위해 dp
의 인덱스 c 이후 값 중에서 최소값을 구한다.
Author And Source
이 문제에 관하여([Python] 백준 1106 - 호텔 문제 풀이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@boorook/Python-백준-1106-호텔-문제-풀이저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)