ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 백준 2798 블랙잭
    Python_알고리즘 2021. 8. 6. 23:04
    문제 바로가기

       문제분석   

    # n개의 카드 중에서 3장을 골라 그 값의 합이 딜러가 외친 m과 같거나 가장 근접한 값을 찾아야 한다.

    # 3장을 골라 조합해야하므로 삼중 반복문으로 풀이한다.

     

     

       문제풀이   

    n, m = map(int, input().split()) 
    cards = list(map(int, input().split()))
    
    sum = []  # 각 조합으로 더한 값들을 저장
    for i in range(n):
        for j in range(i+1, n):
            for k in range(j+1, n):
                card_sum = cards[i] + cards[j] + cards[k]
                if card_sum <= m:
                    sum.append(card_sum)
    print(max(sum))

    # 카드의 갯수인 n과 딜러가 외친 카드의 합인 m을 입력값으로 받는다.

    # n장의 카드 중에서 3장을 골라야 하므로 3중 반복문으로 완전탐색을 한다.

    # n개의 카드를 반복문에서 하나씩 꺼내 쓸 수 있도록 리스트에 담는다.

    # 각 조합으로 더한 값들을 저장하는 빈 리스트를 하나 초기화한다.

    # n개 카드를 반복문을 돌리는데, i부터 시작하고

    • i이후부터 n까지 다시 한 장(j)을 뽑고
    • 다시 j이후부터 n까지 한 장(k)을 뽑는다.
    • 이때, 카드의 각각 i, j, k번째 인덱스의 합을 구하고 
    • 만약 그 합이 딜러가 외친 m보다 작거나 같다면 각 조합으로 더한 값을 저잘하기 위해 초기화 했던 sum리스트에 append해준다.
    • n개의 반복문이 모두 끝나면

    # 조합들이 모인 sum리스트에서 가장 큰 값을 max를 이용해 출력한다.

     

     

     

    'Python_알고리즘' 카테고리의 다른 글

    [Python] 백준 1002 터렛  (0) 2021.08.06
    [Python] 백준 2579 계단 오르기  (0) 2021.08.05
    [Python] 백준 9663 N-Queen  (0) 2021.08.04
    [Python] 백준 15650 N과 M (2)  (0) 2021.08.03
    [Python] 백준 2108 통계학  (0) 2021.07.31

    댓글

Designed by Tistory.