사용 언어 - Python3
문제 - 2961번 도영이가 만든 맛있는 음식
정답
재귀함수로 푼 풀이
def recur(idx, sin, sun, use)
recur(인덱스수, 신맛, 쓴맛, 사용한 재료수)
인덱스 한개씩 늘려가면서 반복해주기
신맛은 1, 쓴맛은 0으로 초기값 설정 recur(0,1,0,0)
- 해당 재료 사용 했다면, 신맛은 곱하기 쓴맛은 더하기 재료수는 +1 로 업데이트
- 해당 재료 사용 안했다면, 단맛, 신맛, 재료수 그대로
- 재료 무조건 1개 이상 사용해야 함
- 신맛과 쓴맛의 차이와 answer 1e9 중 더 작은 값으로 answer 업데이트
print(answer)
def recur(idx, sin, sun, use):
global answer
if idx == n:
if use > 0 : # 재료 무조건 1개 이상 사용
answer = min(answer, abs(sin - sun))
return
# 재료 사용 O
recur(idx+1, sin*ingre[idx][0], sun+ingre[idx][1], use+1)
# 재료 사용 X
recur(idx+1, sin, sun, use)
n = int(input()) # 재료의 개수
ingre = [list(map(int,input().split())) for _ in range(n)]
answer = 1e9
recur(0,1,0,0) # 초기값 신맛=1, 쓴맛=0
print(answer)
레퍼런스
- 깃허브 정답
'Algorithm > DFS&BFS&백트래킹&재귀' 카테고리의 다른 글
[백준] 14501번 퇴사 (1) | 2023.10.30 |
---|---|
[백준] 19942번 다이어트 (1) | 2023.10.30 |
[백준] 2503번 숫자 야구 (재귀함수) (1) | 2023.10.30 |
[백준] 수열 - 재귀함수 구현 정리 (2) (0) | 2023.10.30 |
[백준] 수열 - 재귀함수 구현 정리 (1) (0) | 2023.10.30 |
댓글