반응형
문제 출처: www.acmicpc.net/problem/2798
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
1. 문제 접근 방식
- 먼저 세개의 구간으로 나누어야 했다. 그 나눠진 구간들에서 하나씩을 선택하여 3개의 값을 구하는 과정을 반복해가면서 주어진 값을 넘지 않는 최대의 값을 구하였다.
2. 내가 푼 코드
import sys
N, M = map(int, sys.stdin.readline().split())
num = list(map(int, sys.stdin.readline().split()))
sum = 0
# 세개의 구간으로 나누기
# 3개의 수를 골라 더해가며 M을 넘지 않는 가장 큰 수 출력하기
for i in range(N):
for j in range(i+1, N):
for k in range(j+1, N):
if num[i] + num[j] + num[k] > M:
continue
else:
sum = max(sum, num[i]+num[j]+num[k])
print(sum)
3. 결과 및 느낀점
- 성공! for문이 3번이나 들어간다니..... 풀었지만 참 아쉬운 문제다 ㅠ
반응형
'개인 공부 > Algorithm' 카테고리의 다른 글
[코딩테스트 준비] 그리디 알고리즘에 대해 (0) | 2021.04.22 |
---|---|
[Baekjoon/백준] 1188번 Python (0) | 2021.04.21 |
[Baekjoon/백준] 11729번 Python (0) | 2021.04.17 |
[Baekjoon/백준] 10773번 Python (0) | 2021.04.16 |
[Baekjoon/백준] 1057번 Python (0) | 2021.04.15 |