Lumpy Space Princess - Adventure Time
코딩테스트/백준

백준[2798] - 블랙잭

yaebb_82 2023. 2. 11.

 

 

문제

 

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

댓글