문제/백준_파이썬

75. 2798(블랙잭)

sm_hope 2022. 6. 8. 22:39
N, M = map(int, input().split())

cardNum = list(map(int, input().split()))

max = 0

for i in range(0, N-2):
    for j in range(i+1, N):
        for k in range(j+1, N):
            sum = cardNum[i]+cardNum[j]+cardNum[k]

            if(sum > max and sum <= M):
                max = sum

print(max)

브루트포스 알고리즘을 사용한다

https://smhope.tistory.com/196

 

브루트 포스(brute force)

-너비-우선-탐색(BFS,-breadth-first-search)" data-nodeid="2">브루트 포스(brute force) => 너비 우선 탐색(BFS, breadth first search) brute 무식한 force 힘이다. 완전탐색 알고리즘으로 모든 경우의 수를 모..

smhope.tistory.com

결국에는 전체를 다 비교해보고 적합한 값을 찾는 것이다.

 

다른방법도 있다.(파이썬에서 import해서 사용할 수 있는 함수이다.)

1. 순열

서로 다른 n 개 중 r 개를 골라 순서를 고려해 나열한 경우의 수.

import itertools
N, M = map(int, input().split())

cardNum = list(map(int, input().split()))
max = 0

for i, j, k in list(itertools.permutations(cardNum, 3)):
    sum = i+j+k
    if(sum >= max and sum <= M):
        max = sum

print(max(answer))

 

 

 

2. 조합

서로 다른 n개 중에서 r개(n≥r) 취하여 조를 만들 때, 이 하나하나의 조를 n개 중에서 r개 취한 조합

import itertools
N, M = map(int, input().split())

cardNum = list(map(int, input().split()))
max = 0

for i, j, k in list(itertools.combinations(cardNum, 3)):
    sum = i+j+k
    if(sum >= max and sum <= M):
        max = sum

print(max)

 

 

 

순열과 조합 차이는??

=> 정의에서 보면 순열과 조합의 차이점은 순서가 있고 없음의 차이 이다..

 

순열 (순서 O)   조합 (순서 X)