-
[백준] 2798 - 블랙잭 (Python)코딩테스트 2021. 3. 5. 15:39
제출 코드
from itertools import combinations n, m = list(map(int, input().split())) card_num = list(map(int, input().split())) # 카드의 순열을 구한다. card_cases = list(combinations(card_num, 3)) # 각 케이스마다의 합을 저장한다. summary = [] # 각 카드의 순열의 합이 m보다 크면 다음 카드 순열을 불러오고, # 작거나 같다면 합의 배열에 추가한다. for case in card_cases: if sum(case) > m: continue else: summary.append(sum(case)) # 각 합의 제일 큰 값을 리턴한다. print(max(summary))
itertools의 조합(중복 없이 선택)을 구해주는 combinations 함수를 사용해 3개의 카드를 뽑았을 때의 경우의 수를 card_cases에 저장한다.
card_cases의 각 case들의 합이 주어진 숫자(m)보다 크다면, 다음 case로 넘어간다.
작거나 같다면, summary에 case의 합을 저장한다.
마지막으로 각 경우의 수의 제일 큰 값을 max 함수를 사용해 출력한다.
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 문자열 내 p와 y의 개수 (Python) (0) 2021.03.25 [프로그래머스] 1878 - 나머지 한 점(Python) (0) 2021.03.06 [백준] 1874 - 스택 수열 (Python) (0) 2021.03.05 [백준] 2920 - 음계 (Python) (0) 2021.03.05 코드업(CodeUp) 기초 100제 1001-1054 (Python) (0) 2021.01.27