본문 바로가기

백준/실버

(285)
[백준 17291번] 새끼치기 (C++) 문제링크 : https://www.acmicpc.net/problem/17291#include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N;int dp[20];int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> N; dp[0] = dp[1] = 1; //초기값 for(int i=2; i 기본적으로 매년 분열하므로, dp식을 매번 직전 값에 2배를 해준다.이후 감소되는 케이스를 보면, 짝수년도 4번 분열 + 홀수년도 3번 분열이므로 사실상 짝수년도에서만 분열되었던 값들이 사라지게 되는 것을 알 수 있다. 이에 4번 ..
[백준 17391번] 무한부스터 (C++) 문제링크 : https://www.acmicpc.net/problem/17391 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N, M;int arr[301][301];bool visited[301][301];int dx[] = {0, 1};int dy[] = {1, 0};void bfs(){ queue>q; q.push({0, 0, 0}); visited[0][0] = 1; while(!q.empty()) { auto [y, x, cnt] = q.front(); q.pop(); if(y == N-1 && x == M..
[백준 6571번] 피보나치 수의 개수 (python) 문제링크 : https://www.acmicpc.net/problem/6571dp = [0 for i in range(1001)]dp[1] = 1dp[2] = 2for i in range(3, 1001) : dp[i] = dp[i-1] + dp[i-2]while(True): a, b = map(int,input().split()) if a == 0 and b == 0 : break cnt = 0 for i in range(1, 1001) : if a  피보나치 계산에 따라 수가 매우 커지므로 python으로 푸는 것이 용이한 문제이다.C++로 풀 경우 문자열로 바꾸어서 계산할 필요가 있다. 이외에는 사전에 피보나치를 dp를 통해 미리 계산해놓고 입력받은..
[백준 14607번] 피자 (Large) (C++) 문제링크 : https://www.acmicpc.net/problem/14607#include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;ll N;int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> N; cout  백준 14606번과 유사하지만 N의 범위 때문에 14606번을 풀었던 점화식을 그대로 사용한다면 메모리 초과가 발생하는 문제이다.참고링크 : https://blob-thinking.tistory.com/386 [백준 14606번] 피자 (Small) (C++)문제링크 : https://www.acmicpc.net/pr..
[백준 17213번] 과일 서리 (C++) 문제링크 : https://www.acmicpc.net/problem/17213 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;ll N, M;ll dp[31][31];void func(){ dp[0][0]=1; //첫 번째 값 1 for(int i=1; i> N >> M; func(); cout  중복 조합 문제이다.간단하게 생각해보면 nHm 이지만, 모든 종류의 과일이 적어도 1개씩 있어야 한다는 조건 때문에 nHm-n이 된다.이를 조합으로 변환하여 계산을 해주면 된다.그러면 nCr = n+r-1Cr = n+m-n+1Cm-n이 된다.해당 계산은 파스칼 삼각형 공식을 ..
[백준 4097번] 수익 (C++) 문제링크 : https://www.acmicpc.net/problem/4097 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N;int arr[250001];int dp[250001];int main(){ ios_base::sync_with_stdio(0); cin.tie(0); while(true) { int result = -MAX; cin >> N; if(N==0) break; for(int i=0; i> arr[i]; dp[0] = arr[0]; for(int i=1; i 구간이 비어..
[백준 1660번] 캡틴 이다솜 (C++) 문제링크 : https://www.acmicpc.net/problem/1660 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N;int arr[121], dp[300001];int main(){ ios_base::sync_with_stdio(0); cin.tie(0); for(int i=1; i> N; for(int i=1; i 먼저 사면체 대포알 수 구하는 공식을 이용하여 미리 사면체 대포알 갯수를 구해준다.이때 문제의 대포알 최대 갯수가 30만인데, 이에 맞게 가능한 최대 i 값인 120까지 구하도록 하였다. 이후 dp 배열을 초기화 해주는데 사면체를 생각하지 ..
[백준 1793번] 타일링 (python) 문제링크 : https://www.acmicpc.net/problem/1793dp = [0 for i in range(251)]while(True): try: n = int(input()) dp[0]=1 dp[1]=1 dp[2]=3 dp[3]=5 for i in range(4, n+1): dp[i] = dp[i-1] + 2*dp[i-2] print(dp[n]) except: break 출력 범위로 인해 python으로 푼 문제이다.C++로 풀 경우 큰 수를 다뤄야 하기 때문에 훨씬 복잡해진다. 점화식의 경우 N=3 까지 그림을 직접 그려보면 어렵지 않게 알 수 있다.N=3의..