1. 문제
https://www.acmicpc.net/problem/1535
1535번: 안녕
첫째 줄에 사람의 수 N(≤ 20)이 들어온다. 둘째 줄에는 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 들어오고, 셋째 줄에는 각각의 사람에게 인사를 할 때, 얻는 기쁨이 1번
www.acmicpc.net
2. 풀이
import sys
input = sys.stdin.readline
# n : 병문안 온 사람 수
n = int(input())
# L : 각 사람들에게 인사할 때 잃는 체력 리스트
L = list(map(int, input().split()))
# J : 각 사람들에게 인사할 때 얻는 기쁨 리스트
J = list(map(int, input().split()))
# maxEnjoyLevel : 최대 기쁨 수치
maxEnjoyLevel = 0
def helloRecur(L, J, remainHealth, enjoyLevel):
global maxEnjoyLevel
for k, v in enumerate(L):
if remainHealth - v <= 0:
continue
else:
maxEnjoyLevel = max(maxEnjoyLevel, enjoyLevel + J[k])
helloRecur(L[k+1:], J[k+1:], remainHealth - v, enjoyLevel + J[k])
helloRecur(L, J, 100, 0)
print(maxEnjoyLevel)
3. FeedBack
- 재귀의 개념은 이해하고 있지만, 코드로 구현하는데 시간이 걸렸던 문제였다.
재귀도 상황에 따라 다른 형태로 구현해야 하기 때문에 각 상황을 빠르고 확실하게 파악하여, 코드로 구현할 수 있어야 하겠다.
'알고리즘 공부 > 백준' 카테고리의 다른 글
(Python)백준 코딩테스트 연습 - 팩토리얼5(1564) (0) | 2023.04.23 |
---|---|
(Python)백준 코딩테스트 연습 - 잃어버린 괄호(1541) (0) | 2023.04.20 |
(Python)백준 코딩테스트 연습 - 세 수 고르기(1503) (0) | 2023.04.16 |
(Python)백준 코딩테스트 연습 - 최대 곱(1500) (0) | 2023.04.09 |
(Python)백준 코딩테스트 연습 - 기타콘서트(1497) (0) | 2023.04.08 |