2798: 블랙잭
# 2798: 블랙잭 <브루트포스 알고리즘>
# 내풀이
from itertools import combinations
import sys
n , m = map(int, sys.stdin.readline().split())
cards = list(map(int, sys.stdin.readline().split()))
sums = list(map(sum, combinations(cards, 3)))
result = []
for i in sums :
if i <= m :
result.append(i)
print(max(result))
## 다른풀이, 직접 구현
import sys
n , m = map(int, sys.stdin.readline().split())
cards = list(map(int, sys.stdin.readline().split()))
l = len(cards)
ans = 0
for i in range(0, l-2):
for j in range(i+1, l-1):
for k in range(j+1, l):
if(cards[i] + cards[j] + cards[k] > m):
continue
else:
ans = max(ans, cards[i] + cards[j] + cards[k])
print(ans)
#########################################################################
# 서로다른 4장의 카드 중 3개를 뽑는 경우의 수 출력 해보기. (삼중 for문) #
# cards = [1,2,3,4] #
# l = len(cards) #
# for i in range(0, l-2): #
# for j in range(i+1, l-1): #
# for k in range(j+1, l): #
# print(cards[i], cards[j], cards[k]) #
#########################################################################
7568: 덩치
# 7568: 덩치 <브루트포스 알고리즘>
n = int(input())
person = []
for _ in range(n):
x, y = map(int, input().split())
person.append([x, y])
k = [1 for i in range(l)]
for i in range(l) :
for j in range(i+1, l) :
if (person[i][0] < person[j][0]) and (person[i][1] < person[j][1]) :
k[i] += 1
print(k)
## 나 이외에 다른 모든 경우의 수랑 비교해줘야함
n = int(input())
person = []
for _ in range(n):
x, y = map(int, input().split())
person.append([x, y])
for pers in person :
k = 1
for oth in person :
if (pers[0] < oth[0]) and (pers[1] < oth[1]) :
k += 1
print(k, end=' ')
오늘 배웠던 점
- 브루트 포스는 다소 무식(?) 한 접근 방법임 모든 경우의 수를 탐색함
- 반복문이 많아질 수 밖에 없다.
'매일매일 (Everyday)' 카테고리의 다른 글
[BOJ] 백트래킹 - N과 M (1) 문제 - Python (0) | 2021.12.17 |
---|---|
[BOJ] 정렬 - 값 / 좌표압축 문제 - Python (0) | 2021.12.15 |
내가 못풀었던 문제 리스트, 앞으로 계획 (0) | 2021.12.13 |
[BOJ] - 기본 수학 2 - (2) - Python (0) | 2021.12.13 |
[BOJ] - 기본 수학 2 - 소수 - (1) - Python (0) | 2021.12.09 |