dev_eun

[프로그래머스] 다리를 지나는 트럭 본문

공부/알고리즘 문제

[프로그래머스] 다리를 지나는 트럭

_eun 2020. 12. 10. 21:36

programmers.co.kr/learn/courses/30/lessons/43165?language=python3

 

코딩테스트 연습 - 타겟 넘버

n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+

programmers.co.kr

def dfs(index, current_num, numbers, answer, target, size):
  if index == size-1:
    if target == current_num: answer += 1
    return answer

  answer = dfs(index+1, current_num + numbers[index+1], numbers, answer, target, size)
  answer = dfs(index+1, current_num - numbers[index+1], numbers, answer, target, size)

  return answer


def solution(numbers, target):
  size = len(numbers)
  answer = 0

  answer = dfs(0, numbers[0], numbers, answer, target, size)
  answer = dfs(0, -numbers[0], numbers, answer, target, size)

  return answer

 

 

- 개선

def solution(numbers, target):
    if not numbers and target == 0 :
        return 1
    elif not numbers:
        return 0
    else:
        return solution(numbers[1:], target-numbers[0]) + solution(numbers[1:], target+numbers[0])

...

다른 사람의 풀이다.

728x90