본문 바로가기
백준

[백준] 2798번 : 블랙잭 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 3.
728x90
반응형

 

 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 라이브러리를 불러온다. import sys
  2. 카드 개수와 만들어야 하는 합을 입력받는다. N, M = map(int, sys.stdin.readline().split())
  3. 각 카드에 쓰여있는 수를 입력받아 각각 리스트로 저장한다. li = list(map(int, sys.stdin.readline().split()))
  4. 카드 3장을 뽑아 그 합을 저장할 리스트를 만든다. result = list()
  5. 카드 3장을 뽑아야 하므로 3개의 반복문을 수행한다. 각 반복문은 처음부터 끝까지, 이전 반복문의 다음부터 끝까지 반복한다. for i in range(len(li)): for j in range(i + 1, len(li)): for k in range(j + 1, len(li))
  6. 각 반복문마다 선택된 카드의 값을 더한 결과가 만들어야 하는 합보다 작으면 if (M >= (li[i] + li[j] + li[k]))
  7. 각 반복문마다 선택된 카드의 값을 더해 리스트에 저장한다. result.append(li[i] + li[j] + li[k])
  8. 합을 저장한 리스트의 값들 중 최댓값을 출력한다. print(max(result))
반응형

3. 소스코드

import sys

N, M = map(int, sys.stdin.readline().split())
li = list(map(int, sys.stdin.readline().split()))

result = list()
for i in range(len(li)):
    for j in range(i + 1, len(li)):
        for k in range(j + 1, len(li)):
            if (M >= (li[i] + li[j] + li[k])):
                result.append(li[i] + li[j] + li[k])

print(max(result))
728x90
반응형