알고리즘 공부(C++)

2798 블랙잭

혀니리리 2022. 8. 24. 16:55
728x90

2798번: 블랙잭 (acmicpc.net)

 

2798번: 블랙잭

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

www.acmicpc.net

N, M = map(int,input().split())
lst = list(map(int, input().split()))
result = 0
for i in range(N):
    for j in range(i + 1, N):
        for k in range(j + 1, N):
            if lst[i] + lst[j] + lst[k] <= M:
                if lst[i] + lst[j] + lst[k] > result:
                    result = lst[i] + lst[j] + lst[k]
print(result)

브루트포스 문제..

최대한 for문으로 인한 시간을 줄이기 위해서는 삼중포문에서 이전 인덱스의  +1씩 해서 거기부터 참조해야

시간초과에서 벗어날 수 있다.

728x90

'알고리즘 공부(C++)' 카테고리의 다른 글

4948 베르트랑 공준  (0) 2022.08.26
백준 10814 나이순 정렬  (0) 2022.08.25
백준 1010 다리놓기  (0) 2022.08.24
백준 15649 N과 M(1)  (0) 2022.08.24
1018 체스판 다시 칠하기  (0) 2022.08.22