[BOJ][Python][브2][2798] 블랙잭

문제 링크

문제링크

첫 번째 풀이

정답코드

백트래킹으로 접근합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import sys
from math import pi, sqrt
from collections import deque

# sys.stdin = open("input.txt", 'r')

n, m = map(int, input().split(' '))
arr = list(map(int, input().split(' ')))
ans = 0


def recur(depth, start, sum):
    global ans
    if sum > m:
        return
    if depth == 3:
        ans = max(ans, sum)
        return
    for k in range(start, n):
        recur(depth + 1, k + 1, sum + arr[k])


recur(0, 0, 0)

print(ans)

두 번째 풀이

정답코드

3개를 고르기 때문에 3중 for문으로 접근합니다. n이 100으로 작기 때문에 가능한 방법입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import sys
from math import pi, sqrt
from collections import deque

# sys.stdin = open("input.txt", 'r')

n, m = map(int, input().split(' '))
arr = list(map(int, input().split(' ')))
ans = 0

for i in range(n - 2):
    for j in range(i + 1, n - 1):
        for k in range(j + 1, n):
            sum = arr[i] + arr[j] + arr[k]
            if sum <= m:
                ans = max(ans, sum)

print(ans)

Success Notice: 수고하셨습니다. :+1:

Leave a comment