Dandy Now!
  • [알고리즘][파이썬] 백준_2798_블랙잭
    2021년 12월 02일 12시 38분 35초에 업로드 된 글입니다.
    작성자: DandyNow
    728x90
    반응형

    N장의 카드가 주어졌을때, 카드 3장의 숫자 합이 M을 넘지 않으면서 M에 최대한 가까운 값을 구해 출력해야 한다.


    제출 코드

    # for반복문, max함수 이용(결과: 맞았습니다!)
    
    def bkj(N, M):
        rst = []
        for i in range(N):
            for j in range(i+1, N):
                for k in range(j+1, N):
                    n = lst[i] + lst[j] + lst[k]
                    if n <= M:
                        rst.append(n)
        return max(rst)
    
    N, M = map(int, input().split())
    lst = list(map(int, input().split()))
    print(bkj(N, M))

    해결한 방법

     

    아래 [표1]은 for 반복문 수행 시 rst 리스트의 index에 차례로 append되는 합값을 정리한 것이다.

    제출된 코드에는 이 합값 중 M값과 같거나 적은 값만 append 되도록 if 조건문을 추가하였다.

    최종적으로 rst 리스트에서 가장 큰 값을 return하였다.

    [표1] for 반복문 수행 결과 rst 리스트에 append되는 합값(if 조건문에 의해 24는 append되지 않음)

     

    728x90
    반응형
    댓글