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 |
Tags
- Linux
- 백준 1253번
- 1967번
- 실습
- UnrealMP
- 셰그먼트트리
- C++
- 1253번
- 비재귀셰그먼트
- 오손데이터읽기
- FBX
- 데이터베이스 배움터
- objtofbx
- oracle
- SQL
- hackerank
- 언리얼 플러그인
- Security
- 트랜잭션 관리
- UActor
- command not found
- 2단계로킹
- 백준
- 의미와 무의미의 경계에서
- 민겸수
- OS
- Unreal
- 언리얼 커스텀 플러그인
- 1759번
- 5639
Archives
- Today
- Total
fatalite
☆ 스티커 - 백준 9465 본문
Problem
티어
실버 1
분류
Dynamic Programming(Bottom-Up)
접근
해결 못했었음
1) 첫 번째로 재귀(순열)로 접근(경우의 수가 기하급수적으로 되어버림),
2) DP 태그 보고 했는데 점화식 어떻게 세워야하는지 몰랐음.
걍 털림.. DP 너무 오랜만이라서 그런가..? 하고 변명을..
풀이
문제의 구조에서 점화식을 유도 해야했음.
이런 부분이 아직 많이 부족한 것 같다.
Solution
#include <iostream>
#include <vector>
using namespace std;
int n,t;
vector<vector<int>> dp;
vector<vector<int>> tmp;
int main()
{
cin >> t;
//Test Case Loop
for (int i = 0; i < t; i++) {
tmp.clear();
dp.clear();
cin >> n;
for (int j = 0; j < 2; j++) {
vector<int> line;
tmp.push_back(line);
for (int k = 0; k < n; k++) {
int a;
cin >> a;
tmp[j].push_back(a);
}
}
dp.push_back(vector<int>());
dp.push_back(vector<int>());
dp[0].push_back(tmp[0][0]);
dp[1].push_back(tmp[1][0]);
//dp[0][1]
dp[0].push_back(tmp[0][1] + dp[1][0]);
//dp[1][0]
dp[1].push_back(tmp[1][1] + dp[0][0]);
for (int p = 2; p < n; p++) {
dp[0].push_back(tmp[0][p] + max(dp[1][p - 1], dp[1][p - 2]));
dp[1].push_back(tmp[1][p] + max(dp[0][p - 1], dp[0][p - 2]));
}
cout << max(dp[0][n-1],dp[1][n-1]) << "\n";
}
}
'코딩 인터뷰 > C++' 카테고리의 다른 글
이분 그래프 - 백준 1707 (0) | 2023.05.22 |
---|---|
☆ 용액 - 백준 2467 (0) | 2023.04.11 |
트리 순회 - 백준 1991 (0) | 2023.04.08 |
정수삼각형 - 백준 1932 (0) | 2023.04.04 |
N과 M(1) - 백준 15649 (0) | 2023.02.27 |