728x90
N, M = map(int,input().split())
cards = list(map(int,input().split()))
card_list = [(cards[x]+cards[y]+cards[z]) for x in range(len(cards)) \
for y in range(len(cards)) for z in range(len(cards)) if x < y < z]
print(max([x for x in card_list if x <= M]))
카드를 입력받고 세가지 카드로 만들수 있는 모든 경우의 수를 리스트로 만들었다.
리스트에서 M보다 작은 것을 값들을 리스트로 다시 만들고 그 중에서 최댓값을 출력했다.
이걸 사용하면 조금 더 쉽게 만들수 있을 것이다.
from itertools import permutations
itertools.permutations(iterable, r=None)
# iterable에서 요소의 연속된 길이 r 순열을 반환합니다.
# r이 지정되지 않았거나 None이면,
# r의 기본값은 iterable의 길이이며 가능한 모든 최대 길이 순열이 생성됩니다.
from itertools import combinations
itertools.combinations(iterable, r)
# 입력 iterable에서 요소의 길이 r 서브 시퀀스들을 반환합니다.
# 조합(combination) 튜플은 입력 iterable의 순서에 따라 사전식 순서로 방출됩니다.
# 따라서, 입력 iterable이 정렬되어있으면, 조합 튜플이 정렬된 순서로 생성됩니다.
docs.python.org/ko/3.8/library/itertools.html
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 1475 방 번호 (0) | 2021.01.30 |
---|---|
[백준] 1075 나누기 (0) | 2021.01.30 |
[백준] 1339 단어 수학 (0) | 2021.01.30 |
[백준] 4673 셀프 넘버 (0) | 2021.01.30 |
[백준] 1110 더하기 사이클 (0) | 2021.01.30 |