[백준] 2798번 : 블랙잭 (파이썬)
문제
나의 답안
n,m=map(int,input().split())
a=list(map(int,input().split()))
le=len(a)
sl=[]
for i in range(0,le-2):
for j in range(i+1,le-1):
for k in range(j+1,le):
s=a[k]+a[j]+a[i]
if s<=m:
sl.append(s)
print(max(sl))
완전 탐색 문제이다.
완전 탐색이란, 모든 경우의 수를 전부 탐색하는 것으로 예외가 존재하지 않는 탐색이다.
브루트 포스는 완전 탐색 중 비선형 구조를 가지는 너비 우선 탐색 문제로, 문제를 선형 구조화 시켜 접근한다.
- 3장의 카드를 뽑기 때문에 삼중 반복문을 사용한다.
- 따라서 첫번째 카드는 전체 카드 배열에서 나머지 두장을 빼고 접근할 것이기에, le-2까지 반복한다.
- 두번째 카드는 첫번째 카드 다음부터(i+1) le-1까지 접근한다.
- 세번째 카드는 두번째 카드 다음부터(j+1)부터 le까지 접근한다.
- 세번째 카드까지 접근한 후, 세장의 카드값을 합해 변수 s에 저장한다. 만약 합한 값이 m보다 같거나 작다면 해당 값을 배열에 저장한다.
- 해당 합을 전부 구한다면, 배열에 저장된 값 중 가장 큰 값을 구해 출력 한다.
Author And Source
이 문제에 관하여([백준] 2798번 : 블랙잭 (파이썬)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yj_lee/백준-2798번-블랙잭-파이썬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)