sm 기술 블로그

75. 2798(블랙잭) 본문

문제/백준_파이썬

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)

 

'문제 > 백준_파이썬' 카테고리의 다른 글

77. 7568(덩치)  (0) 2022.06.11
76. 2231 (분해합)  (0) 2022.06.09
74. 11729(하노이 탑 이동 순서)  (0) 2022.06.08
73. 2447 (별 찍기 - 10)  (0) 2022.06.06
72. 17478 (재귀함수가 뭔가요?)  (0) 2022.06.06
Comments