BAEKJOON (Python)/단계별

BAEKJOON_2798 "블랙잭" PYTHON

RiLLa_0511 2023. 3. 21. 09:42
728x90

[백준] 2798번 Python 파이썬

 

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

 

2798번: 블랙잭

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

www.acmicpc.net

이 문제는 brute force 알고리즘을 사용하여 푸는 문제이다.

 

# 틀린 코드

 

다음 코드로 실행하였더니 아래 사진과 같이 리스트의 수들이 중복되어 더해졌다.

n, m = map(int, input().split())
num = list(map(int, input().split()))
rt = 0

for i in num[0:n-2]:
    for j in num[1:n-1]:
        for k in num[2:n]:
            sum = i + j + k
            if rt < sum <= m:
                rt = sum

# 수정된 코드

 

중복을 피하기 위해 다음과 같은 코드로 수정해주었다.

n, m = map(int, input().split())
num = list(map(int, input().split()))
rt = 0

for i in range(n-2):
    for j in range(i+1,n-1):
        for k in range(j+1,n):
            sum = num[i] + num[j] + num[k]
            if rt < sum <= m:
                rt = sum
print(rt)

혼자 공부하며 올리는 블로그입니다. 틀린 내용은 댓글 남겨주시면 감사하겠습니다.