반응형
문제설명
https://programmers.co.kr/learn/courses/30/lessons/68644
사고과정
- N개 중 2개를 뽑는 조합의 경우의 수를 탐색하면서 그 경우의 수를 합한 결과값을 집합 자료구조형에 담아서 unique한 원소들만 남도록 구현했다.
- 한 가지 배운점이 있는데, 그 동안 nested function(중첩 함수)에서 바깥 함수에서 정의한 변수를 inner 함수에서 사용할 때 어떻게 해야 하나 싶어서 잘 안찾아보고 그냥 전역에다가 정의를 했는데, 찾아보니 nonlocal 이라는 키워드를 사용하면 말끔히 해결되었다.. 진작 찾아볼 걸 싶었다 ㅜㅜ nonlocal 기억하자!
풀이
def solution(numbers):
# n개 중 2개를 뽑는 조합의 경우의 수
n = len(numbers)
res = [0] * 2
answer = set()
def dfs(L, idx):
nonlocal n, res
if L == 2:
answer.add(sum(res))
return
else:
for i in range(idx, n):
res[L] = numbers[i]
dfs(L+1, i+1)
dfs(0, 0)
answer = sorted(list(answer))
return answer
반응형
'알고리즘 삽질장' 카테고리의 다른 글
[프로그래머스] 최소 직사각형 (0) | 2021.12.08 |
---|---|
[프로그래머스] 2016년 (0) | 2021.12.08 |
[프로그래머스] 예산 (0) | 2021.12.08 |
[프로그래머스] 3진법 뒤집기 (0) | 2021.12.08 |
[프로그래머스] 약수의 개수와 덧셈 (0) | 2021.12.07 |