일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 파이썬
- 백준
- DateTime
- Set
- 이분탐색
- 재귀함수
- Re
- java
- 수학
- backjoon
- BFS
- 다익스트라
- 추석맞이 코딩챌린지
- 카카오
- python
- KAKAO BLIND RECRUITMENT
- programmers
- 프로그래머스
- 정렬
- lambda
- heapq
- 정규식
- Combinations
- 그리디
- dfs
- 동적 계획법
- 자바
- 위클리 챌린지
- Zip
- divmod
Archives
- Today
- Total
상상쓰
[추석맞이 코딩챌린지③] 블랙잭 본문
https://cafe.naver.com/codeuniv/44963
재귀함수를 사용하여 N 개의 카드 중에서 세 장의 카드를 뽑도록 구현하였다.
0
0 1
0 1 2
0 1 3
.
.
.
0 1 N
0 2 3
.
.
.
N-3
N-3 N-2
N-3 N-2 N-1
순으로 계산하며 하나의 카드 또는 두 장의 카드의 숫자의 합이 X 를 넘으면 그 카드를 포함하는 경우는 더 진행하지 않는다. 합이 X 를 넘지 않으면서 세 장이 됐을 때 세 장의 카드의 숫자의 합 중에서 최댓값을 출력한다.
import sys
N, X = map(int, sys.stdin.readline().split())
cards = list(map(int, sys.stdin.readline().split()))
cards.sort()
answer = 0
def rf(N, X, current, result, count):
global cards
global answer
if count == 3:
answer = max(answer, result)
else:
for i in range(current+1, N+count-2):
if result + cards[i] <= X:
rf(N, X, i, result + cards[i], count + 1)
rf(N, X, -1, 0, 0)
print(answer)
'Coding Test' 카테고리의 다른 글
[백준] 쉽게 푸는 문제 (0) | 2021.09.23 |
---|---|
[추석맞이 코딩챌린지 Bonus] 공격할 수 없는 Queen (0) | 2021.09.21 |
[추석맞이 코딩챌린지②] 정상 정복 (0) | 2021.09.20 |
[추석맞이 코딩챌린지①] 피보나치수 (0) | 2021.09.19 |
[프로그래머스] 금과 은 운반하기 (0) | 2021.09.17 |
Comments