-
[BOJ] 2798번Algorithm/Baekjoon Online Judge 2022. 3. 21. 21:38728x90
https://www.acmicpc.net/problem/2798
Python3
from itertools import combinations if __name__ == '__main__': N, M = map(int, input().split()) cards = list(map(int, input().split())) nearby_sum = 0 for card in list(combinations(cards, 3)): s = sum(card) if M >= s > nearby_sum: nearby_sum = s print(nearby_sum)
블랙잭을 해본 적은 없지만 3장의 카드를 골라야 한다는 말을 보고 바로 조합을 생각했다. 파이썬에서는 순열, 조합 라이브러리인 itertools를 제공하여 순열과 조합을 쉽게 구할 수 있다. 예전에 영상처리를 하면서 사용해본적이 있어서 기억났다. itertools 라이브러리의 조합 combinations를 import하여 사용했다.
우선 N과 M을 입력받고 입력받은 카드들을 리스트로 만들었다.
해당 리스트와 조합할 카드 개수 3개를 combinations의 인자로 넣어 조합을 얻고 이를 리스트로 받았다. 이 리스트에서 한개씩 조합을 꺼내어 조건을 확인했다. 우선 가장 근접한 합을 저장할 변수 nearby_sum을 지정했다. 이후 M은 카드의 합보다 작거나 같아야 하며 가장 근접한 합이 현재 조합의 카드의 합보다 작을 때 가장 근접한 합을 현재 조합의 카드 합으로 바꿔준다. 모든 조합을 확인하면 근접한 합을 출력한다. 브루트포스 방식을 통한 해결이었다.
728x90'Algorithm > Baekjoon Online Judge' 카테고리의 다른 글
[BOJ] 7568번 : 덩치 (0) 2022.03.21 [BOJ] 2231번: 분해합 (0) 2022.03.21 [BOJ] 11729번 (0) 2022.03.20 [BOJ] 1002번 (0) 2022.03.16 [BOJ] 3053번 (0) 2022.03.16