[백준] 블랙잭 2798번

나의 풀이

N, M = map(int, input().split())
cards = list(map(int, input().split()))
answer = 0
for i in range(len(cards) - 2):
    for j in range(i + 1, len(cards) - 1):
        for k in range(j + 1, len(cards)):
            _sum = cards[i] + cards[j] + cards[k]
            if _sum > M:
                continue
            elif _sum == M:
                answer = _sum
                break
            else:
                answer = max(answer, _sum)

print(answer)
  • 카드 갯수, 최대값, 카드 번호를 전부 입력받는다.
  • 3개의 조합을 짜야되기 때문에, 3중 반복문을 돌린다.
  • 3개의 카드의 합이 최대값보다 크다면, 사용할 수 없으므로 그냥 넘긴다. 합이 최대값과 같다면 다른 건 보지 않아도 이게 정답이 되기 때문에 answer 값을 바꿔주고, break 한다. 합이 최대값보다 작다면, 최소값 중에서, 가장 큰 값을 max 를 사용하여 구해준다.

0개의 댓글