[백준 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

 

 

 

N, M = map(int,input().split())
li = list(map(int, input().split()))
result = 0

for i in range(0,N):
    for j in range(i+1,N):
        for k in range(j+1,N):
            temp = li[i]+li[j]+li[k]
            if temp > M:
                continue
            if result<temp:
                result=temp
print(result)


가장 기본적인 방법부터 생각해보면 브루트포스(Brute Force)가 생각이 난다. 

N<100 으로 

시간 복잡도가 N^3의 경우 1000000으로 시간 초과 문제도 발생하지 않기 때문에 브루트 포스를 이용해서 풀었다.

 

주의할점은 for 문의 시작점인데 

i는 0부터

j는  i보다 1큰곳 부터

k는 j보다 1큰곳 부터 시작해줘야 중복이 발생하지 않고 모든 경우를 체크 해 볼 수 있다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유