일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Set
- 프로그래머스
- 동적 계획법
- 정규식
- 그리디
- backjoon
- 정렬
- 다익스트라
- DateTime
- python
- 파이썬
- 백준
- 자바
- divmod
- Combinations
- KAKAO BLIND RECRUITMENT
- programmers
- 이분탐색
- 수학
- lambda
- 카카오
- 재귀함수
- dfs
- heapq
- 추석맞이 코딩챌린지
- java
- Zip
- 위클리 챌린지
- BFS
- Re
Archives
- Today
- Total
상상쓰
[추석맞이 코딩챌린지③] 블랙잭 본문
https://cafe.naver.com/codeuniv/44963
[추석맞이 코딩챌린지③] 블랙잭
첫 번째 문제와 두 번째 문제는 잘 풀어보셨나요? 오늘은 Lv.3 문제로 좀 어려울 수 있어요ㅠㅠ 하지만 우리 모두 할 수 있어요! 오늘도 파이팅💪💻🔥 세 번째 문제는 ...
cafe.naver.com
재귀함수를 사용하여 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