반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 렌탈스튜디오창업
- fastapi
- oracleapex
- DB
- 계정계
- 컴퓨터공학학사취득
- 학점은행제무료강의
- 코어뱅킹
- 개인프로필스튜디오창업
- 맥북환경설정
- it자격증
- 채널계
- SQL
- union
- 디렉토리계층구조
- 프로그래머스
- 맥북셋팅
- python
- 은행IT
- 코딩테스트
- 오라클
- 맥북
- 의사결정나무모형
- 모놀리식
- MSA
- jdk
- jdk17
- 학점은행제
- Homebrew
- Pass By Value
Archives
- Today
- Total
개발머해니
[프로그래머스] 타겟넘버 본문
728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/43165
문제유형 : BFS, DFS
BFS 풀이법
def solution(numbers, target):
answer = bfs(numbers, target)
return answer
def bfs(numbers, target):
answer = 0
sums = [0]
for num in numbers:
tmp = []
for s in sums:
tmp.append(s + num)
tmp.append(s - num)
sums = tmp
for s in sums:
if s == target:
answer += 1
return answer
- `sums = []`, `tmp = [0]` 로 초기화했다가 에러가 발생했다.
- `for s in sums` 에서 빈 배열에 접근하므로 인덱스 에러가 발생했을 것이다
DFS 풀이법
def solution(numbers, target):
answer = dfs(numbers, target, 0)
return answer
def dfs(numbers, target, depth):
answer = 0
# 탈출조건
if len(numbers) == depth:
if sum(numbers) == target:
return 1
else:
return 0
else:
answer += dfs(numbers, target, depth+1)
numbers[depth] *= -1
answer += dfs(numbers, target, depth+1)
return answer
def solution(numbers, target):
다시 한 번 풀어봄
def solution(numbers, target):
answer = 0
answer = dfs(numbers, target, 0, 0)
return answer
def dfs(numbers, target, depth, sum):
cnt = 0
if depth == len(numbers):
if sum == target:
#print("탈출=[1]-----------------------")
return 1
else:
#print("탈출=[0]-----------------------")
return 0
else:
a, b = numbers[depth], (numbers[depth]*-1)
#print(f"depth={depth} | sum={sum} | a,b={a,b} | cnt={cnt}")
cnt += dfs(numbers, target, depth+1, sum+a)
#print(f"depth={depth} | sum={sum} | a={a} | cnt={cnt}")
cnt += dfs(numbers, target, depth+1, sum+b)
#print(f"depth={depth} | sum={sum} | b={b} | cnt={cnt}")
#print(f"재귀 out | cnt={cnt}")
return cnt
728x90
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스] 정수를 나선형으로 배치하기 (python3) (0) | 2024.05.09 |
---|---|
[프로그래머스] 옹알이(1) (0) | 2024.03.25 |
[파이썬] 괄호 짝 확인하기 (0) | 2023.12.15 |
[파이썬] 런던 폭우 Ⅱ (0) | 2023.09.30 |
[파이썬] 리스트 항목 합 탐색 (0) | 2023.09.30 |