2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는다. 합이 M을 넘지 않는 카드 3장을 찾을 수 있�
www.acmicpc.net
<내 코드>
N, M = map(int, input().split())
nums = list(map(int, input().split()))
sum = 0
for i in range(N-2):
for j in range(i+1, N-1):
for k in range(j+1, N):
if ((nums[i] + nums[j] + nums[k]) > M):
continue
else:
sum = max(sum, nums[i] + nums[j] + nums[k])
print(sum)
from itertools import combinations
N, M = map(int, input().split())
nums = list(map(int, input().split()))
result = 0
for cards in combinations(nums, 3):
sum_num = sum(cards)
if sum_num <= M and sum_num > result:
result = sum_num
print(result)
파이썬에서 제공하는 순열 조합을 구하는 모듈인 combinations을 이용해 모든 경우를 구한다.
combinations(리스트, 몇 개씩 조합할지) 정해주면 된다.
반응형
'알고리즘 문제풀기 > 백준 - Python' 카테고리의 다른 글
[백준 11725] 트리 부모 찾기 - Python (DFS, 트리) (0) | 2020.10.03 |
---|---|
[백준 1991] 트리 순회 - Python (트리, 재귀) (0) | 2020.10.03 |
[백준 13458] 시험 감독 - Python (수학) (0) | 2020.09.23 |
[백준 14503] 로봇 청소기 - Python (구현, 시뮬레이션) (0) | 2020.09.23 |
[백준 14502] 연구소 - Python (브루트포스, BFS) (0) | 2020.09.22 |