solution은 받은 값으로 계산해요
함수의 매개변수와 return을 배웠어요. 실전형 함수 문제에서는 입력을 읽는 코드가 따로 있어요. 내가 작성할 부분은 주어진 값을 받아 결과를 반환하는 solution이에요.
def solution(start, changes):
balance = start
for change in changes:
balance = balance + change
return balance
solution(10, [-3, 5, -8])은 10에서 시작해 7·12·4를 거쳐 마지막 잔액 4를 반환해요. 음수 변경은 지출, 양수 변경은 입금이에요. 함수 안에서는 input이나 print를 다시 쓸 필요가 없어요. 그림은 같은 호출의 잔액 흐름이에요.
현재 상태와 최저 상태를 나눠요
이번에는 마지막 잔액이 아니라 가장 낮았던 잔액을 찾아요. 시작 잔액도 관찰한 상태에 포함해요. balance는 현재 값, lowest는 지금까지의 최저값으로 구분해요.
같은 예제에서 두 값은 아래처럼 달라져요.
| 단계 | balance | lowest |
|---|---|---|
| 시작 | 10 | 10 |
| −3 | 7 | 7 |
| +5 | 12 | 7 |
| −8 | 4 | 4 |
아래 편집기에서 입력을 읽는 하네스는 읽기 전용이에요. solution의 몸체를 고쳐 정수 하나를 return해요. changes가 비어 있으면 시작 잔액이 그대로 최저예요.
직접 풀어봐요
solution(start, changes)를 완성해 시작과 각 변경 직후를 포함한 최저 잔액을 반환해요. 잔액이 음수가 되어도 허용해요.
start는 01000, changes 길이는 0100, 각 변경은 −1000~1000이에요. 실행용 입력은 첫 줄 start, 둘째 줄 변경 개수 n, 이 후 n 줄에 변경 값이에요. 하네스가 입력을 읽고 함수 반환값을 출력해요.
예시 1: start= 10, changes=[-3, 5, -8] → 4예요.
예시 2: start= 5, changes=[7, -2] → 5. 시작값도 포함해요.
예시 입력
10 3 -3 5 -8
예상 결과
4
예시 입력
5 2 7 -2
예상 결과
5
핵심 개념
function-design: 함수의 입력·반환 계약을 읽고, 현재 상태와 누적 최저 상태를 별도 변수에 유지해요.