본문 바로가기

Algorithm

(2139)
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 9465번:스티커 답 #include #include using namespace std;int D[100001][3], A[100001][2];int main() {int n, T;int ans = 0;cin >> T;for (int k = 0; k > n;for (int i = 0; i A[j][i];}}D[0][0] = D[1][0] = D[2][0] = 0;for (int i = 1; i
(C++, Python3) - 백준(BOJ) 11055번 :가장 큰 증가 부분 수열 답 https://www.acmicpc.net/problem/11055dp문제였습니다.📕 풀이방법📔 입력 및 초기화배열길이 n과 배열을 arr를 선언 후 입력받습니다.📔 풀이과정완전 탐색으로 i까지 도달했을 때 가장 큰 증가 부분 수열의 값을 d[i]라 하면 다음과 같은 점화식이 가능합니다. $${ if \ arr[i] > arr[j] \ D[i] = MAX(D[j](0arr[i]가 가장 큰 값이므로 그보다 작은 arr[j]를 발견할 경우 그때의 D[j]값에서 현재 선택 값인 arr[i]를 더한 값의 최댓값을 d[i]에 저장하면 됩니다. n이 1000까지이므로 O(N^2)로 동작 가능한 풀이입니다.📔 정답 출력 | 반환정답 배열의 가장 큰 원소를 반환합니다.📕 Code📔 C++#include ..
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 11053번:가장 긴 증가하는 부분 수열 답 //가장 긴 증가하는 부분수열의 길이를 D//D[i] = A[1],A[2],...,A[i]; i가 마지막으로 수열이 끝날 때의 D의 길이 = D[i]//A[i]>A[j] 이고 D[j] > D[i] 일 때 D[i] = D[j]12345678910111213141516171819202122232425#include #include #include using namespace std;int main() { int n; cin >> n; vector A(n); for (int i = 0; i> A[i]; } vector D(n); for (int i = 0; i
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1912번:연속합 답 //연속 합에서 가장 큰 수를 구할 때는 두 가지 경우로 나눌 수 있다//1.자기 자신만 더했을 때 가장 큰 경우//2.연속 된 두 수를 더했을 때 가장 큰 경우//D[i] = i번째 수로 끝나는 가장 큰 연속 합//K[] = 입력된 수//D[i] = D[i-1] + K[i] 와 K[i]와 비교했을 때 가장 큰 것. 12345678910111213141516171819202122232425262728293031#include #include #include using namespace std;int main() { int n, big = 0; cin >> n; vector D(n); vector K(n); for (int i = 0; i > K[i]; } for (int i = 0; i
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1699번:제곱수의 합 답 //O + O + ... + j^2 = i일 때..//D[i] = 합의 최소 개수//i-j^2 = O+O+O...+O//그러므로 D[i] = min(D[i],D[i-j^2]+1)1234567891011121314151617181920#include #include using namespace std;int D[100001];int main() { int N; cin >> N; for (int i = 1; i
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 11052번:붕어빵 판매하기 답 //D[i] = 붕어빵 i개를 팔았을 때 얻을 수 있는 최대 수익//P[i] = 붕어빵 세트를 팔았을 때 얻을 수 있는 수익//마지막 j를 팔 때 최대 수익을 남길 수 있다면 j를 제외한 나머지 붕어빵 개수는 i-j개//D[i-j]에 나머지 P[j]를 더하면 D[i]가 된다.//모든 경우의 수를 살펴봐 가장 큰 값이 최대 수익이 된다.// D[i] = max(D[i],P[j]+D[i-j])123456789101112131415161718#include #include using namespace std;int main() { int N,big = 0; cin >> N;//남은 붕어빵 int *D = new int[N + 1]; int *P = new int[N + 1]; for (int i = 1; i ..
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1463번:1로 만들기 답 DP문제입니다. 더 작은 문제 또한 기존의 문제와 푸는 법이 같기 때문에 점화식을 세워서 풉니다.123456789101112131415161718192021#include #include using namespace std;int D[1000001]; int main(void) { int N; cin >> N; for (int i = 2; i
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 2965번:캥거루 세마리 답 12345678910#include using namespace std;int main() { int A, B, C; cin >> A >> B >> C; if (C - B > B - A) cout