SWEA(Python) 풀이/D3

SWEA[D3] (Python) 5215번 햄버거 다이어트 풀이

개발윗미 2022. 5. 20. 18:17

Python으로 구현한 5215번 햄버거 다이어트 합 문제 풀이입니다.

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AWT-lPB6dHUDFAVT&categoryId=AWT-lPB6dHUDFAVT&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=PYTHON&select-1=3&pageSize=10&pageIndex=5 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


from itertools import combinations

t = int(input())

for tc in range(1, t + 1) :
    n, l = map(int, input().split())
    data = [list(map(int, input().split())) for _ in range(n)]

    max_score = 0
    for i in range(1, n + 1) :
        for value in combinations(data, i) :
            kcal = 0
            score = 0
            for v in range(len(value)) :
                kcal += value[v][1]
                score += value[v][0]
            if kcal > l :
                continue
            if max_score < score :
                max_score = score

    print('#%d %d' % (tc, max_score))

 

1. 각 테스트 케이스마다 n개의 [점수, 칼로리]를 입력받아 data 리스트에 저장한다.

 

2. 모든 조합을 구하여 각 조합에서의 칼로리의 총합과 점수 총 합을 구한다.

 

3. 만약 칼로리의 총합이 l보다 크다면 continue하고, l보다 작거나 같고 score가 max_score보다 크다면 max_score를 score 값으로 갱신한다.

 

4. 최종적으로 해당 테스트 케이스 번호와 함께 max_score 값을 출력한다.