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
- BFS
- Level 2
- 프로그래머스
- Level 4
- 부스트코스
- 코드리뷰
- 구현
- 시뮬레이션
- 백준
- SWEA
- DP
- 2019 KAKAO BLIND
- 삼성 SW 역량 테스트
- 스택/큐
- 그리디
- Gold 5
- DFS
- pass
- Level 3
- 백트래킹
- 월간 코드 챌린지
- Web
- 2020 KAKAO BLIND
- 2020 카카오 인턴십
- level 1
- 브루트포스
- 코드 리뷰
- c++
- next_permutation
- Gold 4
Archives
- Today
- Total
Min:D's Devlog
[프로그래머스][DFS/BFS][C++] 타겟 넘버 본문
문제
프로그래머스 DFS/BFS - 타겟 넘버 (Level 2)
문제 풀이
접근 방식
주어진 배열의 숫자들을 더하거나 빼서 타겟 넘버를 만드는 방법의 수를 구하는 문제이다.이 문제는 BFS 방식으로 해결해주었다.
우선, 결괏값을 저장할 배열인 answer_list에 0을 넣어주었고,그 배열의 값에 numbers[i]를 더한 값과 뺀 값을 temp에 넣어주었다.temp에 저장된 결괏값들은 answer_list에 다시 복사해주었다.이 과정을 numbers의 원소의 개수만큼 반복해주었다.이후, 최종 결괏값 배열인 answer_list에서 타겟 넘버의 개수를 세서 답을 구해주었다.
풀이 코드 - C++
#include <vector>
using namespace std;
int solution(vector<int> numbers, int target) {
int answer = 0;
vector<int> answer_list(1);
for(int i : numbers){
vector<int> temp;
for(int j : answer_list){
temp.push_back(j+i);
temp.push_back(j-i);
}
answer_list = temp;
}
for(int i : answer_list) {
if(i == target)
answer++;
}
return answer;
}
실행 결과
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Summer/Winter Coding(~2018)][C++] 스킬트리 (0) | 2020.10.19 |
---|---|
[프로그래머스][그리디][C++] 섬 연결하기 (0) | 2020.10.09 |
[프로그래머스][2019 KAKAO BLIND][C++] 길 찾기 게임 (0) | 2020.09.23 |
[프로그래머스][월간 코드 챌린지 시즌 1][C++] 풍선 터트리기 (0) | 2020.09.22 |
[프로그래머스][월간 코드 챌린지 시즌 1][C++] 삼각 달팽이 (0) | 2020.09.21 |
Comments