반응형
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 | 31 |
Tags
- 위상정렬
- 카이스트
- glfw
- computergraphics
- html
- nodeJS
- 어은동맛집
- MySQL
- 후기
- BFS
- 안드로이드스튜디오
- 대전맛집
- 컴퓨터그래픽스
- 프래그먼트
- 앱개발
- DP
- 리사이클러뷰
- 카이스트맛집
- 타입스크립트
- 분리집합
- 자바스크립트
- 몰입캠프후기
- 프로그래머스
- 우선순위큐
- 알고리즘
- 몰입캠프
- 자바
- node.js
- 궁동
- 백준
Archives
- Today
- Total
소근소근
[프로그래머스 - 타겟 넘버] BFS C++ 본문
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
'Algorithm' 카테고리의 다른 글
[프로그래머스 - 단어 변환] BFS C++ (0) | 2022.01.09 |
---|---|
[프로그래머스 - 네트워크] BFS, 분리집합(disjoint set) Union & Find C++ (0) | 2022.01.08 |
[프로그래머스 - 베스트앨범] 해시 C++ (0) | 2022.01.06 |
[백준 BOJ 4195 glod2 - 친구 네트워크] 해시, 분리집합(disjoint set / union find) C++ (0) | 2022.01.05 |
[알고리즘/자료구조] 분리 집합( Disjoint Set (a.k.a Union & Find) ) 코드 구현 C++ , 집합 크기 구하기 (0) | 2022.01.05 |