코딩테스트 대비/단계별 코딩 테스트 준비(27일 과정)

[브루트포스/Python] 2798번: 블랙잭 - 효과는 굉장했다!

bluetag_boy 2022. 2. 11. 21:15
반응형
 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net

 

알고리즘 분류

  • 브루트포스 알고리즘

 

 

SOLUTION

import sys
import itertools # combinations 함수를 쓰기 위해 itertools 모듈 import

N, M = map(int, sys.stdin.readline().split())
# combinations 함수 이용해 각각의 다른 조합 구함
card_list = list(itertools.combinations(map(int, sys.stdin.readline().split()), 3)) 
tmp = []
total = 0

for i in range(len(card_list)):
    total = sum(card_list[i])
    if total <= M:
        tmp.append(total)

print(max(tmp))

 

※ itertools.combinations( 반복 가능 , r )

  • 조합이란 서로 다른 n개 중에서 r개 (n≥r) 취하여 조를 만들 때, 이 하나하나의 조를 n개 중에서 r개 취한 것 입니다.
  • 입력 iterable 에서 요소의 r 길이 부분 시퀀스를 반환 합니다.
  • 조합 튜플은 iterable 입력의 순서에 따라 사전순으로 방출됩니다.