https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV2b7Yf6ABcBBASw 

 

SW Expert Academy

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

swexpertacademy.com

 


아이디어

  • 간단한 문제이다.
  • 모든 직원들의 키를 더한 순열을 만들어 그 중 B이상인 것 중 가장 작은 값을 출력한다.

 


풀이

for tc in range(int(input())):
    N, B = map(int, input().split())
    H = list(map(int, input().split()))

    # 모든 탑의 길이를 담을 리스트
    sums_lst = [0]
    for i in range(N):
        # 현재 키에서 모든 탑의 길이를 담은 리스트를 다 더해주고 추가
        for j in range(len(sums_lst)):
            val = H[i] + sums_lst[j]
            sums_lst.append(val)

    # B를 넘지 않는 가장 큰 값
    print(f'#{tc+1}', min([x-B for x in sums_lst if x-B >= 0]))
복사했습니다!