[프로그래머스 LV2] 타겟 넘버

Junyoung Park·2022년 5월 30일
0

코딩테스트

목록 보기
450/631
post-thumbnail

1. 문제 설명

타켓 넘버

2. 문제 분석

BFS를 통해 가능한 모든 수를 체크, 마지막 수까지 조합(+/-)한 결과가 타겟 넘버와 동일하다면 개수를 카운트.

3. 나의 풀이

import Foundation

func solution(_ numbers: [Int], _ target: Int) -> Int {
    var answer = 0
    var queue = [(Int, Int)]()
    queue.append((numbers[0], 0))
    queue.append((-1 * numbers[0], 0))
    var index = 0
    let numberCnt = numbers.count
    
    while queue.count > index {
        let curData = queue[index]
        let curNum = curData.0
        let curIdx = curData.1
        
        let nextIdx = curIdx + 1
        
        if nextIdx < numberCnt {
            queue.append((curNum + numbers[nextIdx], nextIdx))
            queue.append((curNum - numbers[nextIdx], nextIdx))
        } else {
            if curNum == target {
                answer += 1
            }
        }
        index += 1
    }
    return answer
}
profile
JUST DO IT

0개의 댓글