우선 문제의 카테고리가 DFS/BFS 라는 것을 알아버려서 이왕 이렇게 된 거 딱 정석에 맞는 해결법을 찾아보려고 했다!
이 문제를 풀 수 있었던 가장 핵심은 주어진 리스트의 각 원소의 양수와 음수값을 모두 더해보고 마지막 연산 결과들 중에 타겟에 해당하는 값의 개수를 리턴한다는 것이다.
예를 들어, [1, 1, 1]
이라는 값을 받았다고 해보자.
연산값을 저장할 배열에 가장 처음에는 첫 원소의 음수, 양수값을 넣는다.
array = [1, -1]
그리고 주어진 배열의 다음 값을 가져와 그 것의 양수, 음수값을 더한 것을 배열에 저장한다.
그러면 배열의 값은 다음과 같이 변한다.
array = [2, 0, 0, -2]
전달받은 배열을 차례대로 순회하여 얻은 마지막 배열의 값에서 count
함수를 사용하여 타겟에 해당하는 값의 개수를 리턴해주면 정답을 맞출 수 있다!
def solution(numbers, target):
array = []
for num in numbers:
if array == []:
array = [num, -num]
else:
tmp = []
for x in array:
tmp.append(x+num)
tmp.append(x-num)
array = tmp
return array.count(target)
엄청 어려운 문제가 아니었지만 로직을 쉽게 생각해내고 풀어낸 것에 아주 뿌듯했당 ㅎㅎ 😆