https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=python
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
1. DFS사용 시 => (이해못함)
# answer : 경우의 수
answer = 0
# idx: 배열의 숫자를 선택할 index, cur: 차례대로 계산 중인 결과 값
def dfs(idx, cur, numbers, target):
global answer
if idx == len(numbers):
if cur == target:
answer += 1
return 0
dfs(idx+1, cur+numbers[idx],numbers, target)
dfs(idx+1, cur-numbers[idx],numbers, target)
def solution(numbers, target):
dfs(0,0,numbers, target)
return answer
문제풀이
1. numbers 배열의 각 숫자마다 +와 - 사용한 모든 계산 수행하기 위해 재귀함수 활용한 DFS 구현
dfs(idx+1, cur+numbers[idx], numbers, target)
dfs(idx+1, cur-numbers[idx], numbers, target)
2. 재귀함수 호출할 때마다 index 1증가
3. 현재까지 계산 결과가 target과 같으면 answer +1
참고
https://moseory20.tistory.com/29
프로그래머스(DFS/BFS)-타겟 넘버-Python
문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1
moseory20.tistory.com
2. product로 조합 생성해서 풀기
from itertools import product
def solution(numbers, target):
l = [(x, -x) for x in numbers]
s = list(map(sum, product(*l)))
return s.count(target)
풀이
1. 가능한 조합의 갯수가 많지 않으니 product 조합 가능
2. (x, -x) 의 모든 가능한 조합 생성 후 s 리스트에 모든 조합의 합 추가
3. target 값과 s리스트 값중 같은 값의 갯수 세서 리턴
3. 숫자 조합 생성
- numbers의 각 숫자 x에 대해 (x, -x) 형태의 튜플을 생성합니다.
- 예: numbers = [1, 2]라면, l = [(1, -1), (2, -2)]
4. 모든 조합의 합 계산
- product(*l)는 l에서 모든 가능한 조합을 생성합니다.
- 예: l = [(1, -1), (2, -2)]라면, product(*l)는 [(1, 2), (1, -2), (-1, 2), (-1, -2)]를 만듭니다.
- 각 조합의 합을 계산하고, 이를 리스트 s에 저장합니다.
5. 목표값과 같은 경우의 수 계산
- 리스트 s에서 target 값과 같은 요소의 개수를 세어 반환합니다.
예시 실행
- l 생성:
-
l = [(1, -1), (1, -1), (1, -1), (1, -1), (1, -1)]
- 모든 조합 생성 및 합 계산:
-
product(*l) = [ (1, 1, 1, 1, 1), (1, 1, 1, 1, -1), ..., (-1, -1, -1, -1, -1) ] s = [5, 3, 3, 1, ...] # 각 조합의 합
- 목표값 3의 개수 계산:
s.count(3) = 5
결과:
참고
https://ror-coding.tistory.com/104
[Programmers] 타겟 넘버 - 43165
첫 dfs 알고리즘 문제 ! recursive function을 이용하여 구한다.또 다른 방법으로는 from itertools import product를 사용하여 모든 조합에 대한 합을 구한다. Question 사용할 수 있는 숫자가 담긴 배열 numb
ror-coding.tistory.com
'Algorithm > DFS&BFS' 카테고리의 다른 글
[프로그래머스] 게임 맵 최단거리 /DFS/BFS/파이썬 (1) | 2024.12.19 |
---|---|
[이코테] DFS/BFS/ 특정 거리의 도시 찾기 (0) | 2024.10.30 |
[이코테]DFS/BFS/ 음료수 얼려먹기 (1) | 2024.10.22 |
9466번/DFS 텀 프로젝트/파이썬 (0) | 2024.09.29 |
1240번/DFS 노드사이거리/파이썬 (1) | 2024.09.28 |