백준[파이썬]

[백준/Python] 2798 블랙잭

코린이 파닥거리기 2024. 10. 15. 22:33
728x90
반응형
SMALL

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

 

제출코드

 

N, M = map(int,input().split())
N_list = list(map(int,input().split()))
total = []
for i in range(N):
    for j in range(i+1,N):
        for k in range(j+1,N):
            sum = N_list[i] + N_list[j] + N_list[k]
            if sum <= M:
                total.append(sum)
print(max(total))

 

코드 설명

N과 M을 map함수를 사용하여 int형식으로 입력받음

N_list에 카드에 쓰여있는 숫자들을 입력받기 위해 map함수와 list함수를 사용하여 int형식의 리스트로 입력받음

sum값을 하나하나 넣어줄 total 리스트 선언

0부터 N-1까지 i 순회하면서

i+1번째부터 N-1까지 j순회하면서

k+1번째부터 N-1까지 k순회하면서

sum값에 N_list의 [i] [j] [k]의 인덱스값을 저장

sum 값이 M보다 작거나 같으면 total리스트에 sum값을 append하여 저장

마지막에 total값 출력

 

느낀점

브루트 포스 알고리즘을 사용하여 풀었던것 같다. 사실 잘 안풀려서 브루트 포스 알고리즘을 찾는데 힘들었다.

블랙잭의 카드의 개수가 100개까지여서 빅오가 N**3이어서 완전탐색으로 풀었다.

i값을 0으로 고정시켜놓고 i+1부터 N-1까지 j값을 고정시켜놓고 j+1 부터 N-1까지 k값을 찾는다. 3중 for문으로 M값보다 작으면 total에 sum값을 append해줬다. 알고리즘 문제를 많이 풀어봐야겠다고 느꼈다.

728x90
반응형
LIST