문제
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
작성한 코드
from itertools import combinations
N, M = map(int, input().split())
cards = list(map(int, input().split()))
result = 0
for i in combinations(cards, 3):
if result < sum(i) <= M:
result = sum(i)
print(result)
- from itertools import combinations : 조합 사용 [모든 경우의 수를 고려할 때 사용]
[이것이 코딩 테스트다] 파이썬 - 자주 사용되는 표준 라이브러리
실전에서 유용한 표준 라이브러리 - 내장 함수 : 기본 입출력 ~ 정렬 함수까지 기본적인 함수들 제공 : import 구문 없이 사용 가능한 함수들 (print, input, ... 등등) : 없어서는 안되는 필수적인 기능
bingguel.tistory.com
- N과 M을 공백을 기준으로 입력받아 int형으로 형변환 해준다.
- 카드 갯수 만큼 입력받을 카드들을 cards 라는 리스트에 공백을 기준으로 저장한다.
- combinations으로 cards 리스트에서 3장을 순서에 상관없이 뽑은 리스트를 가지고 for문을 돌린다.
- 3장 뽑은 것들의 합을 sum()으로 구한 뒤, M보다 작거나 같은지 확인이되면 → result에 저장한다.
- 이런 식으로 for문을 돌리다보면, 최대한 M에 가까운 합이 나온다.
- 최종적으로 print()로 result를 출력한다.
'💻 코딩테스트 > 백준' 카테고리의 다른 글
백준[7568] - 덩치 (0) | 2023.02.13 |
---|---|
백준[2231] - 분해합 (0) | 2023.02.11 |
백준 [13305] - 주유소 (0) | 2023.02.10 |
백준 [1541] - 잃어버린 괄호 (0) | 2023.02.07 |
백준 [11399] - ATM (0) | 2023.02.07 |