문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 풀이
- 재귀적으로 리스트의 각 값을 더해가면서 k값이 됐을 때 카운트 해 준다.
- 카운트 한 값을 형식에 맞게 출력한다.
코드
def find_k_val(index, num):
# 더한 값이 k인 횟수를 세는 전역변수
global cnt
# 재귀 종료조건 (인덱스 끝까지 탐색을 마친경우, 더한 값이 k인 경우)
if num == k:
cnt += 1
return
if index == n:
return
# 값을 더하기 위해 현재 인덱스의 값 임시변수에 할당
tmp = array[index]
find_k_val(index+1, num + tmp) # 현재 값에 현재 인덱스의 값을 더하는 경우 탐색
find_k_val(index+1,num) # 현재 값에 현재 인덱스의 값을 더하지 않는 경우 탐색
t = int(input())
for tc in range(t):
# 문자 수 n개 중 합이 k값인 경우의 수 구하기
n,k = map(int,input().split())
array = list(map(int,input().split()))
# 탐색 위한 전역변수 선언
cnt = 0
# 탐색하기 위한 인덱스 번호와 현재 값 넘기기
find_k_val(0,0)
# 탐색 마친 후 전역변수로 선언했던 카운트 값 형식에 맞게 출력
print(f'#{tc + 1}',cnt)'Algorithm > BFS&DFS' 카테고리의 다른 글
| [Python] 백준 1240번 노드사이의 거리 (1) | 2023.11.01 |
|---|---|
| [Java] 백준 4179번 불! (1) | 2023.11.01 |
| [Python] SWEA 2814번 최장경로 (0) | 2023.05.15 |
| [Python] SWEA 5215번 햄버거 다이어트 (1) | 2023.05.13 |
| [Python] 백준 17086번 아기 상어2 (0) | 2023.04.08 |