BOJ - 9329

주의·2023년 11월 17일
0

boj

목록 보기
6/214

백준 문제 링크
패스트 푸드 상금

❓ 접근법

  1. 각 반복의 마지막 줄을 보면 2 3 1 4 5 2 2 1 3 4 , 1 2 3 4 5 6 이런 식으로 적혀있는데, 이것은 스티커 1이 2개, 스티커 2가 3개, 스티커 3이 1개 ... 라는 의미이다.
  2. 만들 수 있는 최대 액수는 조건에 해당하는 스티커의 개수가 가장 적은 값에 상금을 곱하면 된다.
    즉, 첫번째 예시를 보면 조건이 1,2,3 일때 상금이 100이고,
    코치가 스티커 1,2,3을 각각 2장,3장,1장 가지고 있으므로
    스티커 3을 1장 써서 상금을 100 얻으면
    남은 스티커 1,2,3의 개수는 각각 1장,2장,0장 이므로 더 이상 상금을 받을 수 없다.

👌🏻 코드

for _ in range(int(input())):
    x = list(map(int, input().split(" ")))
    k = []
    ans = 0
    
    for _ in range(x[0]):
        k.append(list(map(int, input().split(" "))))
    
    sticker_list = list(map(int, input().split(" ")))
    
    for i in range(x[0]):
        m = 100 # 스티커의 최대 개수
        for j in range(1, k[i][0]+1):
            m = min(m, sticker_list[k[i][j] -1])
        ans += m * k[i][-1]
        
    print(ans)

아직 알고리즘 공부가 많이 어렵다.. ㅠㅠ 더 노력해야겠다

0개의 댓글