728x90
2021.12.17
백준 2798 블랙잭
#2798 블랙잭 /브루트포스 알고리즘
N,M = map(int, input().split()) # 카드의 개수, 목표값
arr = list(map(int, input().split())) # 카드에 쓰여진 수
P = [] # 카드 3장의 합의 모든 경우의 수
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 # M - i의 최솟값을 저장하기 위한 변수
Q = 0 # R의 최솟값을 가지는 Q
for i in P:
if M - i < R and M - i >= 0:
R = M - i
Q = i
print(Q)
모든 경우의 수를 구하는 문제라고 한다.
목푯값인 M과 카드 3장의 합인 P의 요소 중에 그 차이가 가장 작은 게 답이라는 아이디어로 풀었다.
#2798 블랙잭 /브루트포스 알고리즘
N,M = map(int, input().split()) # 카드의 개수, 목표값
arr = list(map(int, input().split())) # 카드에 쓰여진 수
P = [] # 카드 3장의 합의 모든 경우의 수
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
728x90
'Algorithm' 카테고리의 다른 글
백준 2606 파이썬 (0) | 2021.12.29 |
---|---|
브루트포스(Brute Force) 알고리즘 (0) | 2021.12.20 |
코드업(CodeUp) 3120 파이썬 (0) | 2021.12.16 |
백준 13305 파이썬 (0) | 2021.12.13 |
백준 1541 파이썬 (0) | 2021.12.10 |