소근소근

[프로그래머스 - 타겟 넘버] BFS C++ 본문

Algorithm

[프로그래머스 - 타겟 넘버] BFS C++

JJureng 2022. 1. 8. 17:35
728x90
반응형
SMALL

bfs를 이용하면 쉽게 해결할 수 있는 문제이다. 

queue에 -num , num 을 더해주고 큐에 push하면서 반복문을 돌고,  target 에 도달하면 answer를 증가시켜서 카운트한다.

 

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <queue>
#include <string>

using namespace std;
queue <pair<int,int>> q;

int solution(vector<int> nums, int target) {
    int ans = 0;
    
    q.push({0,-nums[0]});
    q.push({0,nums[0]});
    while(!q.empty()){
        int now_idx = q.front().first;
        int total = q.front().second;
        q.pop();
        
        if(now_idx == nums.size()-1 && total == target){
            ans++;
            continue;
        }
        if(now_idx == nums.size()-1 && total != target){
            continue;
        }
        
        for(int i=0;i<2;i++){
            if(i==0){
                q.push({now_idx+1, total + (nums[now_idx+1]) });
            }else{
                q.push({now_idx+1, total +  (-1* nums[now_idx+1]) });
            }
        }
    }
    
    return ans;
}

 

확실히 백준으로 먼저 공부하고 프로그래머스를 푸니까 문제들이 쉽게 풀리는 것 같다. 

백준을 꾸준히 풀어야겠다

728x90
반응형
LIST