[백준 BOJ_2798] 블랙잭 Python 풀이

출처: 백준 온라인 저지

문제

BOJ_2798

풀이

삼중 for loop을 이용하되, 자기 자신을 한번 더 더해주는 것을 막기 위해 for loop의 범위를 제한해줍니다.

첫번째 for loop의 범위는 마지막 두 숫자를 포함하지 않아야하며, (i)
두번째 for loop의 범위는 i의 다음 숫자부터 시작하여 마지막 숫자를 포함하지 않게, (j)
세번째 for loop의 범위는 j의 다음 숫자부터 시작하여 N까지로 제한해줍니다. (k)

매번 합을 구하면서 정해진 숫자 M을 넘지 않는지 확인해주고, 넘지 않을 경우 여태까지 나온 max_num보다 크다면 max_num의 값을 바꿔줍니다.

코드

N, M = map(int, input().split())
cards = list(map(int, input().split()))
max_num = 0
for i in range(N-2):
    for j in range(i+1, N-1):
        for k in range(j+1, N):
            if cards[i] + cards[j] + cards[k] <= M:
                max_num = max(max_num, cards[i] + cards[j] + cards[k])
print(max_num)

Leave a comment