[BOJ] 2798 - 블랙잭

wwan13·2021년 1월 3일

문제 설명


카지노의 블랙잭 게임에서 따온 문제로
첫 줄에 입력 받은 N개의 카드 중에 3개를 뽑아 M보다 크지 않은
최대의 정수를 만드는 문제 이다

전체 코드


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

if len(list) > N:
    exit()

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

print(result)

코드 설명


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

if len(list) > N:
    exit()
  • 블랙잭 문제를 수행하는데 필요한 입력을 받는 부분 이다.
  • 문제의 조건에 맞는 정수들을 입력 받고, 입력 받은 수의 갯수가 N 보다 커질 경우 프로그램을 종료시키는 것으로 예외 처리 해준다.

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

print(result)
  • 실질적인 이 문제의 알고리즘 부분이다.
  • N개의 카드 중 3개의 카드를 고를때 3중 반복문을 이용해 3개의 카드를 뽑는 것으로 모든 경우의 수를 고려 하였다.
  • 마지막으로 현재 골라진 카드의 총 합이 M을 넘지 않은 것 중에 가장 큰 값을 result 변수에 저장 하여 그 값을 출력한다.
profile
엉망진창 뒤죽박죽 개발 이야기

1개의 댓글

comment-user-thumbnail
2021년 1월 18일

굿입니다 ^^

답글 달기