


문제설명
브루트포스는 조합 가능한 모든 경우의 수를 하나씩 검사하는 방법입니다. 이 문제는 3개의 숫자의 합이 M을 넘지 않으면서 M과 가장 가까운 수를 찾아야 합니다. 저는 itertools의 combinations 함수를 사용하여 주어진 카드 중 3장을 골라 조합할 수 있는 경우의 수를 모두 구해 coc라는 리스트에 담았습니다. 그 다음 coc 리스트 내에 있는 카드의 조합들을 검사하여 m이 넘지 않는 가장 큰 수를 구하였습니다. 자세한 내용은 코드를 참고하시면 됩니다.
문제이름(# 문제번호) 파이썬 코드
import sys
import itertools
n, m = map(int, sys.stdin.readline().split())
cards = list(map(int, sys.stdin.readline().split()))
coc = list(itertools.combinations(cards, 3)) # coc = combinations of cards
result = 0 # 결과값 초기화
for i in range(1, len(coc)):
sum_of_cards = sum(coc[i]) # 카드 세 장의 합
if sum_of_cards > m: # 합이 m보다 클 경우 무시
continue
elif sum_of_cards > result: # 카드 합이 result 보다 클 경우 result에 카드 합 넣어주기
result = sum_of_cards
print(result)
'백준 문제풀이 > 브루트포스(Bruteforce)' 카테고리의 다른 글
백준 온라인 저지 - 체스판 다시 칠하기(#1018) 파이썬 (0) | 2022.01.11 |
---|---|
백준 온라인 저지 - 덩치(#7568) 파이썬 (0) | 2021.08.16 |
백준 온라인 저지 - 분해합(#2231) 파이썬 (0) | 2021.08.13 |