프로그래머스에서 타겟넘버 문제를 해결했다.
q 에 나올 수 있는 경우의 수를 저장하였다. queue 에 저장된 작업들을 탐색하고 수를 더하거나 빼서 값을 저장하였다. BFS 탐색으로 문제를 해결하였다.
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> numbers, int target) {
int answer = 0;
queue<int> q;
q.push(numbers[0]);
q.push(numbers[0]*-1);
for(int i=1;i<numbers.size();i++){
int num = q.size();
for(int j=0;j<num;j++){
int a = q.front();
q.push(a-numbers[i]);
q.push(a+numbers[i]);
q.pop();
}
}
while(!q.empty()){
if(q.front()==target)
answer++;
q.pop();
}
return answer;
}
'프로그래밍 > 코딩테스트 문제' 카테고리의 다른 글
[프로그래머스] 다리를 지나는 트럭 (0) | 2019.10.28 |
---|---|
[프로그래머스] 위장문제 (0) | 2019.10.28 |
[프로그래머스] 베스트 앨범 (0) | 2019.10.13 |
[프로그래머스] 전화번호 목록 (0) | 2019.09.14 |
[프로그래머스] 완료하지 못한 선수 (0) | 2019.09.14 |