알고리즘 문제풀이

백준 1049 기타줄 Python 수학 그리디 실버4

아크몽 2024. 3. 18. 00:47

오답 코드

6 묶음을 하나 사는 것보다 낱개 6개를 사는게 더 싼 경우를 고려하지 않았음

if arr_6[0] >= (n % 6) * arr_1[0]:
    sum_v = (n//6) * arr_6[0] + (n % 6) * arr_1[0]
else:
    sum_v = (n//6 +1) * arr_6[0]
print(sum_v)

if arr_6[0] >= 6 *arr_1[0] 룰 추가해야 했다.

정답 코드

# 1049 기타줄 실버4
n, m  = map(int,input().split())
arr_6 = []
arr_1 = []
for _ in range(m):
    x,y = map(int,input().split())
    arr_6.append(x) # 6개짜리
    arr_1.append(y) # 1개 짜리
# print(arr_6      ,arr_1)
arr_6.sort()
arr_1.sort()
sum_v = 0
if arr_6[0] >= arr_1[0] * 6:
    sum_v = n * arr_1[0]
elif arr_6[0] >= (n % 6) * arr_1[0]:
    sum_v = (n//6) * arr_6[0] + (n % 6) * arr_1[0]
else:
    sum_v = (n//6 +1) * arr_6[0]
print(sum_v)