PS/BOJ

[Python] 1049번 기타줄

s_omi 2024. 7. 15. 10:44
728x90
반응형
SMALL

✏️ 문제

 

문제 파악

min(6개입 가격)과 min(낱개 가격) 비교

  • if min(6개입 가격) > min(낱개 가격) * 6 : 낱개로 전부 사는 게 이득
  • if min(6개입 가격) < min(낱개 가격) * 6 : 6개 단위는 6개입으로 사는 게 이득
    • if min(6개입 가격) < min(낱개 가격) * 남은 개수(6개 이하) : 6개입을 하나 더 사는 게 이득
    • if min(6개입 가격) > min(낱개 가격) * 남은 개수(6개 이하) : 낱개로 사는 게 이득

 

알고리즘

  • 그리디 알고리즘
  • 수학

 

 

코드

n, m = map(int, input().split())
brand = []
money = 0

for i in range(m):
  brand.append(list(map(int, input().split())))
    
brand.sort()
min_value = min(min(subarray) for subarray in brand)

if n >= 6:
  if min_value * 6 < brand[0][0]: 
    money += min_value*n
  else:
    money += brand[0][0] * (n // 6)
    n %= 6    
    if brand[0][0] < min_value * n:
      money += brand[0][0]
    else:
      money += min_value * n
else:
  money += min_value * n

print(money)

 

 

728x90
반응형
LIST

'PS > BOJ' 카테고리의 다른 글

[Python] 1213번 팰린드롬 만들기  (0) 2024.07.16
[Python] 14916번 거스름돈  (0) 2024.07.16
[Python] 1946번 신입 사원  (0) 2024.07.15
[Python] 10610번 30  (0) 2024.07.15
[Python] 1439번 뒤집기  (0) 2024.07.15