2798번: 블랙잭 [Python]
백준 알고리즘의 2798번 문제이다.
- 일단 되게는 하자
3중 For문을 이용하기로 했다. 학교에서 배운 바로는 for문은 2중 For문 부터 효율성이 떨어진다고 배웠다. 그러나 일단은 되게 하자. 3중 For문에서 M 이하의 값 중 가장 큰 값을 구하는 방법이다. 말그대로 모든 경우의 수를 따져본다.
N, M = map(int, input().split(" ")) # 입력
num = list(map(int, list(input().split(" "))))
ans = 0
n = 1
for i in num:
for j in num[n:]: # num[n:] 중복 제거
tmp = num[n:]
tmp.remove(j)
for k in tmp: # tmp 중복 제거
if (i + j + k) == M: # 같으면 탈출. 없어도 답은 나올 것 같다.
ans = i + j + k
break
elif ans < (i + j + k) < M: # M 보다 작고 합이 가장 큰
ans = i + j + k
n += 1
print(ans)
중복을 제거하면 조금 더 개선시킬 수는 있을 것 같다.
--2021-07-06--
Author And Source
이 문제에 관하여(2798번: 블랙잭 [Python]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dongkan9/2798번-블랙잭-Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)