반응형
백준 2798번 문제 블랙잭
완전탐색(브루트포스) 문제
https://www.acmicpc.net/problem/2798
문제 풀이
- 완전탐색 : 가능한 모든 경우의 수를 탐색하는 방법
N개의 수 중 3개를 비복원추출하는 모든 경우의 수를 탐색한다.
탐색하여 sum 값이 M보다 작거나 같은 값들 중 가장 큰 값을 구한다.
해답 코드 Python
#백준 2798 블랙잭
#입력받는 방법 한 번 정리하기
#문제똑바로 읽기..^^ : <인지 <=인지
from sys import stdin
N, M = map(int, stdin.readline().split()) #잊지 말기!
card = list(map(int, stdin.readline().split()))
closeSum = 0
# N개의 수 중 3개를 비복원추출하는 모든 경우의 수 탐색
for i in range(0, N-2) :
for j in range(i+1, N-1) :
for k in range(j+1, N) :
sum = card[i] + card[j] + card[k]
#print(sum)
# sum 값이 M보다 작거나 같은 값들 중 가장 큰 값 구하기
if(sum<=M) :
#아래 if문은 closeSum = max(closeSum, sum)과 같은 표현!
if(closeSum < sum) :
closeSum = sum
print(closeSum)
Comment
- 완전탐색
- 가능한 모든 경우의 수를 탐색하는 방법.
- 브루트포스(Brute Force)라고 부르기도 함(무식한 방법이란 뜻)
아래의 if문은 max함수로 간단히 처리 가능. 같은 표현
문제풀이 시 if문을 적게 쓰려고 고민하는 것이 필요할 듯!(continue와 else 활용)
# 표현1
if(closeSum < sum) :
closeSum = sum
# 표현2
closeSum = max(closeSum, sum)
[TODO]
파이썬 입력받는 방법 한 번 정리하기. stdin 참고 https://velog.io/@yeseolee/Python-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9E%85%EB%A0%A5-%EC%A0%95%EB%A6%ACsys.stdin.readline
파이썬의 완전탐색 라이브러리인 itertools 사용해보기. 조합도구
[LOST]
문제똑바로 읽기..^^ : <인지 <=인지
반응형
'DSA > Algorithm' 카테고리의 다른 글
[백준 10162] 전자레인지 Python greedy 그리디 알고리즘 (0) | 2021.09.29 |
---|---|
[백준 2231] 분해합 Python 완전탐색(브루트포스) (0) | 2021.09.26 |
[백준 15829] Hashing 해싱 Python 해시 (0) | 2021.09.26 |
[백준 12605] 단어순서 뒤집기 Python 스택 (0) | 2021.09.14 |
[백준 2161] 카드1 Python 큐 (0) | 2021.09.14 |