프로그래머스_43165_타겟 넘버

임정민·2023년 6월 11일
1

알고리즘 문제풀이

목록 보기
62/173
post-thumbnail

프로그래머스 깊이/너비 우선 탐색 문제풀이 입니다.

문제

https://school.programmers.co.kr/learn/courses/30/lessons/43165

[나의 풀이1]

# bfs
def solution(numbers, target) : 
    
    answer = 0
    
    from collections import deque
    
    # 값,인덱스
    queue = deque([[numbers[0],0],[numbers[0]*(-1),0]])
        
    while queue:
        
        v,n = queue.popleft()

        if n < len(numbers)-1:
            n += 1
            queue.append([v+numbers[n],n])
            queue.append([v-numbers[n],n])
        
        else:
            break
        
    for x in queue:
        if x[0] == target:
            answer += 1
    
    return answer

[나의 풀이2]

# dfs

def solution(numbers, target) : 
    
    answer = 0
    
    # 값,인덱스
    stack = list([[numbers[0],0],[numbers[0]*(-1),0]])
        
    while stack:
        
        v,n = stack.pop()

        if n < len(numbers)-1:
            n += 1
            stack.append([v+numbers[n],n])
            stack.append([v-numbers[n],n])
        
        else:
            if v == target:
                answer += 1
    
    return answer

DFS , BFS 두 가지 알고리즘으로 각각 해결하였습니다. stack 또는 queue 자료에 [현재까지 더한 값, 더한 갯수] 를 주어진 갯수 n개까지 연산하고 target 값과 같을 시 answer에 1개씩 더하는 방식입니다.🐾🐾🐾

감사합니다.

profile
https://github.com/min731

0개의 댓글