1. 문제
https://www.acmicpc.net/problem/2798
2. 접근 방법
사실 3장만 뽑으면 되는거라 3중 for문 써도 되지만,
그냥 함수 만들어서 조합 만들 듯 합을 더해줬습니다.
3. 코드
python
def solution():
N, M = map(int, input().split())
nums = list(map(int, input().split()))
answer = 0
def make_sum(start, cnt, val):
nonlocal answer
if cnt == 3:
if val <= M:
answer = max(answer, val)
return
for i in range(start, N):
make_sum(i+1, cnt+1, val+nums[i])
make_sum(0, 0, 0)
print(answer)
solution()
4. 마치며
이 문제를 기록하는 이유는 문제 때문이 아니라
최근 중첩함수를 이용해서 문제 풀이를 진행하고 있는데
scope 관련해서 global외에 nonlocal을 쓰면 부모 함수의 변수에 접근 뿐만 아니라 값을 바꿀 수 있어서
처음으로 nonlocal 쓴 김에 올려봅니다요
'Algorithm > Python' 카테고리의 다른 글
[python] 17679 프렌즈4블록 - 카카오 2018 1차 (0) | 2021.07.03 |
---|---|
[python] 17684 압축 - 카카오 2018 1차 (0) | 2021.07.03 |
[백준 16926] 배열 돌리기1, 2 (0) | 2021.06.07 |
[LeetCode] 39. Combination Sum (0) | 2021.06.07 |
[LeetCode] 200. Number of Islands (0) | 2021.06.07 |