2021.12.17
백준 2798 블랙잭
N,M = map(int, input().split())
arr = list(map(int, input().split()))
P = []
for i in range(N):
for j in range(i+1,N):
for ii in range(j+1,N):
S = arr[ii]+arr[i]+arr[j]
P.append(S)
R = M
Q = 0
for i in P:
if M - i < R and M - i >= 0:
R = M - i
Q = i
print(Q)
모든 경우의 수를 구하는 문제라고 한다.
목푯값인 M과 카드 3장의 합인 P의 요소 중에 그 차이가 가장 작은 게 답이라는 아이디어로 풀었다.
N,M = map(int, input().split())
arr = list(map(int, input().split()))
P = []
for i in range(N):
for j in range(i+1,N):
for ii in range(j+1,N):
S = arr[ii]+arr[i]+arr[j]
if S <= M:
P.append(S)
print(max(P))
풀고 나서 더 깔끔하게 만들어봤다. 메모리랑 시간도 미세하지만 아래 코드가 더 낫다.
combinations을 import해서 푸는 방법도 있는데 그건 나중에 알았으니 이제라도 잘 기억해야지
from itertools import combinations