sm 기술 블로그
75. 2798(블랙잭) 본문
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
결국에는 전체를 다 비교해보고 적합한 값을 찾는 것이다.
다른방법도 있다.(파이썬에서 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