본문 바로가기
BOJ/[BOJ] Python

백준 2798번 풀이

by Lv. 35 라이츄 2022. 8. 19.

문제

https://www.acmicpc.net/problem/2798

 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net

블랙잭… 진짜로 그냥 블랙잭이다. 카드 장 수와 마지노선, 그리고 카드가 주어질 때 카드 세 장의 합이 마지노선을 넘지 않으면서 제일 큰 수를 구하는 문제다.

 

Reference

https://go-coding.tistory.com/67

 

[Brute Force] 브루트 포스 설명과 간단 코테 풀이

브루트 포스(Brute Force) 알고리즘에서의 브루트 포스(Breute Force)에 관한 이야기 이다 공격기법 부르트 포스에 대한 이야기가 아니다. Brute Force Attack Brute : 난폭한 / Force : 힘 두 의미를 합하면 난폭.

go-coding.tistory.com

https://duwjdtn11.tistory.com/297

 

[Algorithm] [Python] BOJ/백준 - 2798_블랙잭

2798 - 블랙잭 문제 설명 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마

duwjdtn11.tistory.com

 

풀이

일단 마지노선 얘기가 왜 나왔냐면… 블랙잭의 룰이 그렇다. 블랙잭은 카드의 합이 21이 넘으면 지는 게임이기 때문. 즉, 카드 세 장의 숫자를 합쳤을 때 마지노선으로 주어진 수보다 크면 진다. 예시 입력에서 5 21이 주어졌을 때 답은 21이지만 실제로 다 계산해보면 24까지 나온다. 근데 24는 21보다 크니까 져요… 

import sys
card,maginot = map(int,sys.stdin.readline().split())
card_list = list(map(int,sys.stdin.readline().split()))
result = 0

for i in range(card):
    for j in range(i+1,card):
        for k in range(j+1,card):
            if card_list[i]+card_list[j]+card_list[k] > maginot:
                continue
            else: 
                result = max(result,card_list[i]+card_list[j]+card_list[k])
#이거 3중for로 되는거 실화? 

print(result)

이걸로 한방컷 실화…

'BOJ > [BOJ] Python' 카테고리의 다른 글

백준 7568번 풀이  (0) 2022.08.19
백준 2231번 풀이  (0) 2022.08.19
백준 11729번 풀이  (0) 2022.08.19
백준 2477번 풀이  (0) 2022.08.19
백준 2447번 풀이  (0) 2022.08.19

최근댓글

최근글

skin by © 2024 ttutta