삼성 SW 역량테스트 / 삼성 코딩테스트
문제 링크
C++ 풀이
#include <iostream>
#include <vector>
using namespace std;
int max_sum;
//DFS로 풀이
void find_max(vector <pair <int, int>>& TP, int currentN, int sum) {
if (sum > max_sum)
max_sum = sum;
for (int i = currentN; i < TP.size(); i++) {
if (i + TP[i].first <= TP.size())
find_max(TP, i + TP[i].first, sum + TP[i].second);
}
return;
}
int main() {
max_sum = 0;
int N;
cin >> N;
vector <pair <int, int>> TP(N);
for (int i = 0; i < N; i++)
cin >> TP[i].first >> TP[i].second;
find_max(TP, 0, 0);
cout << max_sum;
return 0;
}
DFS로 풀었다.
반응형
'알고리즘 · 코딩' 카테고리의 다른 글
[프로그래머스] 괄호 회전하기 (0) | 2021.04.21 |
---|---|
[백준 14891번] 톱니바퀴 (0) | 2021.04.20 |
[백준 15685번] 드래곤 커브 (0) | 2021.04.18 |
[백준 17144번] 미세먼지 안녕! (0) | 2021.04.14 |
[프로그래머스] 2016년 (0) | 2021.04.11 |