프로그래머스 타겟 넘버(43165) 문제 풀이, 소스 공유
DFS 문제라 이것도 쉬운 문제인데, 전공이 수학이었다 보니 자꾸 수학적으로 접근한다.
전체 경우의 수가 2^N 이니까 비트로 풀면 되겠다 ! 했는데
비트 연산이 손에 익지 않아서 비트 연산 말고 재귀로 풀어버렸다륑
예전에 백준에서 풀 때는 겁나게 소스 길게 풀어야하는 문제가 많았는데 (요즘은 안풀어서 모르겠다)
프로그래머스는 명료하게 작성해도 돼서 좋다.
#include <string>
#include <vector>
using namespace std;
int cnt = 0;
void find_sum(vector<int> numbers, int k, int cur_sum, int target){
if(k == numbers.size()-1){
if(target == cur_sum)
cnt++;
return ;
}
find_sum(numbers, k+1, cur_sum + numbers[k+1], target);
find_sum(numbers, k+1, cur_sum - numbers[k+1], target);
}
int solution(vector<int> numbers, int target) {
int answer = 0;
//k : 몇번째인지 (0 ~ n-1)
//n : numbers 개수
//cur_sum : 현재 숫자
find_sum(numbers, 0, numbers[0], target);
find_sum(numbers, 0, numbers[0]*(-1), target);
answer = cnt;
return answer;
}
문제
'역량강화 > 코딩테스트' 카테고리의 다른 글
[PATHFINDER] 카카오브레인 패스파인더 코딩테스트 후기(패스파인더 1기) (0) | 2021.11.24 |
---|---|
[우테코4기] 우테코 1차 코테 후기(우아한테크코스, 코딩테스트) (0) | 2021.11.06 |
[스택/큐] 프로그래머스 - 네트워크(43162) (0) | 2021.11.06 |
[스택/큐] 프로그래머스 - 기능개발(42586) (0) | 2021.09.04 |
코딩테스트 준비 사이트와 문제유형 (0) | 2021.09.04 |
댓글