728x90
  • 문제
  • 해설
    • import sys
      
      int_cnt, target_sum = [int(x) for x in sys.stdin.readline().split()]
      
      given_seq = [int(x) for x in sys.stdin.readline().split()]
      
      
      def go(seq, cur_sum, cur_ind, used_inds):
          res = 0
      
          # 정답
          if cur_sum == target_sum and cur_ind == len(seq) and used_inds:
              return 1
      
          # 불가능
          if cur_ind == len(seq):
              return 0
      
          if cur_ind < len(seq):
              # 현재 idx를 사용한 경우
              res += go(seq, cur_sum + seq[cur_ind], cur_ind + 1, used_inds + [cur_ind])
              # 현재 idx를 사용하지 않은 경우
              res += go(seq, cur_sum, cur_ind + 1, used_inds)
      
          return res
      
      
      print(go(given_seq, 0, 0, []))
  • 포인트
    • BruteForce임을 눈치챈다.
    • 첫 원소가 포함될 때 안될 때, 각 경우마다 두번째 원소가 포함될 떄 안될 때, ... 재귀 구현
728x90

'Algorithm-Problems > 백준' 카테고리의 다른 글

[백준][1707] 이분 그래프  (0) 2022.02.09
[백준][1697] 숨바꼭질  (0) 2022.02.06
[백준][1476] 날짜 계산  (0) 2022.02.06
[백준][1260] DFS와 BFS  (0) 2022.02.06
[백준][10971] 외판원순회2  (0) 2022.02.06

+ Recent posts