https://www.acmicpc.net/problem/2798
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
[문제유형]
- 브루트포스
[문제]
[제출한 코드 및 풀이]
- 지난번에 combination(조합)을 사용했던적이 있는데, 그 당시와 비슷한 방식으로 풀어야할 것 같아서 사용했다.
- n, m을 입력받고 그 다음줄에 입력 받은 숫자들을 numbers로 한 번에 담았다.
- 각 조합 중 합계가 가장 큰 숫자를 출력해야하니까 maxNum이라는 변수를 만들어줬다.
- numbers의 숫자를 세개씩 조합으로 만들고 그 다음에 for문을 돈다.
- for문은 조합의 길이만큼 돌고 각 조합의 합계가 maxNum보다 크고 m보다 크지 않을 경우 maxNum을 해당 조합의 합계로 변경해서 출력한다.
from itertools import combinations
n, m = map(int, input().split())
numbers = list(map(int, input().split()))
maxNum = 0
combi = list(combinations(numbers, 3))
for i in range(len(combi)):
if maxNum < sum(combi[i]) <= m:
maxNum = sum(combi[i])
print(maxNum)
'Algorithm' 카테고리의 다른 글
[백준 알고리즘] C++ | 2669번 직사각형 네개의 합집합의 면적 구하기 (0) | 2022.06.15 |
---|---|
[백준] 2231번: 분해합(브루트포스) - Python (0) | 2022.03.07 |
[백준] 11399번: ATM(그리디 알고리즘) - Python (0) | 2022.03.03 |
[백준] 11047번: 동전 0(그리디 알고리즘) - Python (0) | 2022.03.03 |
[백준] 1541번: 잃어버린 괄호(그리디 알고리즘) - Python (0) | 2022.03.03 |