[C++] 백준 2156 포도주 시식
·
Algorithm/Baekjoon
#include #include #include #include using namespace std;//포도주를 선택하면 다 마시고 원래 위치에 놓는다.//1~n까지 번호//n개의 포도주// //연속으로 놓여있는 3잔을 모두 마실 수는 없다.//가장 많은 양의 포도주를 마셔라.//1이상 10000이하의 n//입력//첫째줄 n개//둘째줄 n + 1번째까지 포도주의 양 0이상 1000이하int main() { int n; cin >> n; vector grape(n, 0); vector dp(n, 0); for (int i = 0; i > grape[i]; } //dp0 grape0 //dp1 grape1 + dp0 //dp2 grape2 + dp0(grape..
[C++] 백준 1912 연속합
·
Algorithm/Baekjoon
#include #include using namespace std;int main(){ int result = -1001; vector dp; int n; cin >> n; for (int i = 0; i > temp; dp.push_back(temp); } result = max(dp[0], result); for (int i = 1; i  풀이1. 우선 결과 값을 쌓아가면서 먼저 계산을 해본다. dp적 사고를 통해 이전 값+현재값과 현재값을 비교를해준다.2. max를 계속 업데이트하면서 가장 큰 값을 저장한다.3. 현재 값보다 쌓아온 값이 더 작으면 갱신된다. 느낀점아직도 dp적사고가 되지않는 것 같다. 좀 더 점화식을 세우는 것을 연습해야겠다. https://www.acmicpc.net/prob..
[C++] 백준 9935 문자열 폭발
·
Algorithm/Baekjoon
#include #include using namespace std;int main(){ string N = ""; string target = ""; string result = ""; cin >> N >> target; int targetSize = target.size(); for(const auto& bomb : N) { result += bomb; if (result.back() == target.back() && result.size() >= targetSize) { string temp = result.substr(result.size() - targetSize, targetSize); if (temp == target) { result.erase(result.en..
[C++] 백준 10816 숫자 카드2
·
Algorithm/Baekjoon
#include #include #include using namespace std;int main() { ios_base::sync_with_stdio(0); cin.tie(0); vector table; int N, M, num; cin >> N; for (int i = 0; i > num; table.push_back(num); } sort(table.begin(), table.end()); cin >> M; for (int i = 0; i > num; cout  풀이1. vector에 저장하여 정렬해준다.2. 해당 수가 있는 처음과 끝의 차를 계산해서 몇개가 있는지를 확인한다.3. 아래의 입출력 최적화를 빼면 시간초과난..
[C++] 백준 2225 합분해
·
Algorithm/Baekjoon
#include #include #include using namespace std;int main(){ int N = 0; int K = 0; cin >> N >> K; vector> lists(N, vector(K, 1)); for (int i = 1; i  느낀점답을 모두 list로 나열해보자지금까지 풀었던 dp 문제들을 생각해보니 과정을 점화식으로 만들기보다 답에서 패턴을 읽어서 점화식을 만들어 나가는 것같다. 다음에 풀때는 답을 먼저 만들고 패턴을 찾아봐야겠다. https://www.acmicpc.net/problem/2225
[C++] 백준 14889 스타트와 링크
·
Algorithm/Baekjoon
#include #include using namespace std;int N = 0;int result = 1001;vector visited;vector> team;void DFS(int count, int num){ if (count == N / 2) { int start = 0; int link = 0; for (int i = 0; i > N; team = vector>(N, vector(N, 0)); visited = vector(N, false); //입력 for (int i = 0; i > team[i][j]; } } DFS(0, 0); cout  풀이1. DFS로 경우의 수들을 탐색한다.2. ..