백준 알고리즘 2798번 블랙잭,파이썬
이번 문제는 백준 알고리즘의 2798번 블랙잭을 파이썬으로 풀어보았다.
브루트포스에 있는 문제이다.
브루트포스는 자원이 충분하다고 가정하면 가장 무서운 알고리즘인데, 그 이유느 성공률이 100%를 자랑한다.
코드를 잘 보면 알겠지만, 그냥 경우의 수를 다 때려박는 노가다 알고리즘이다.
문제조건
#1. 첫째줄에는 카드의 개수 N과 넘지 않아야하는 수 M이 주어진다
#2. 둘째줄에는 카드의 번호가 주어진다
#3. 카드를 3장을 뽑아서 넘지 않으면서 가장 가까운 카드의 합을 출력한다.
문제 자체는 간단하다.
문제에 대한 내 생각이다
#생각1. 브루트포스는 노가다 알고리즘이니까, 카드가 3개있으니 for문을 3중으로 돌려서 다 경우의수를 다 때려 박는다.
#생각2. 3장의 합이 21을 넘어가면 그냥 continue를 사용하고, 넘지 않는다면 이때까지 중첩된 sum중 가장 큰값을 저장한다.
나는 이렇게 생각하고 코드를 써 내려갔다.
N, M = map(int, input().split())
sum = 0
lst = list(map(int,input().split()))
for i in range(N-2):
for j in range(i+1,N-1):
for k in range(j+1,N):
if lst[i] + lst[j] + lst[k] > M:
continue
else:
sum = max(sum,lst[i] + lst[j] + lst[k])
print(sum)
조금 헷갈렸던점은, 역시 인덱스에 관해서이다.
이 부분은 많이 하는게 답인가 싶기도 한데, 충분히 푼 것 같은데도 자주 헷갈린다.
하나씩 i,j,k값을 적어보면서 관계를 잘 찾아보는게 답인듯 싶다.
하나하나 차근차근 해야할 것 같다.
'코딩테스트 > 백준 알고리즘 풀이' 카테고리의 다른 글
[백준 알고리즘/python] 백준 7568번 덩치, 파이썬 설명 (0) | 2020.09.13 |
---|---|
[백준 알고리즘/python] 백준 2231번 분해합, 파이썬 (0) | 2020.08.13 |
[백준 알고리즘/python] 백준 2775번 부녀회장이 될테야, 파이썬 (0) | 2020.04.03 |
[백준 알고리즘/python] 백준 10250번 ACM 호텔, 파이썬 (0) | 2020.04.02 |
[백준 알고리즘/python] 백준 2869번 달팽이는 올라가고 싶다, 파이썬 (0) | 2020.03.27 |
댓글