Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

행복한 개구리

백준 21.12.19. 2798번 - 블랙잭 본문

Algorithm/BaekJoon

백준 21.12.19. 2798번 - 블랙잭

HappyFrog 2021. 12. 19. 22:48

N, M = map(int, input().split())

cards = list(map(int, input().split()))

result = 0
for i in range(N):
    for j in range(i+1, N):
        for k in range(j + 1, N):
            if cards[i] + cards[j] + cards[k] > M:
                continue
            else:
                result = max(result, cards[i] + cards[j] + cards[k])

print(result)
  • 카드를 세개를 골라야하며 모두 확인해야 하기 때문에 반복문을 3개 중첩하여 실행합니다.
  • 중첩이 될 때마다 시작 인덱스의 범위가 1씩 늘어나는 이유는 카드가 겹치면 안되기 때문입니다.
  • 따라서 서로다른 세장의 카드를 일일히 확인하여 만약 주어진 M보다 크다면 결과를 내지 않고 그대로 검색을 진행합니다.
  • 하지만 M보다 작은 결괏값이 나온다면 기존의 result값과 새로 검색된 값 중에서 더 큰 수를 result로 저장합니다.
  • 반복문이 모두 끝나면 주어진 모든 경우의 수를 확인한 것이기 때문에 result를 출력해주면 됩니다.