본문 바로가기

백준

(497)
[백준 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의..
[백준 12852번] 1로 만들기 2 (C++) 문제링크 : https://www.acmicpc.net/problem/12852 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N;int dp[1000001];int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> N; for(int i=1; i 기본적인 초기화는 3번 조건에 해당하는 값으로 설정해준다.이에 따라 각 idx에 해당 하는 값은 idx-1의 횟수를 필요로 하므로 이에 맞게 초기화를 진행했다. 이후 1, 2번 조건에 대해 체크하며 더 작은 경우를 확인해준다.또 이어서 기존 3번 조건과 1, 2번 조건을..
[백준 2502번] 떡 먹는 호랑이 (C++) 문제 링크 : https://www.acmicpc.net/problem/2502 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int D, K;int A[31];int B[31];int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> D >> K; A[0] = 1; A[1] = 0; //A, B B[0] = 0; B[1] = 1; for(int i=2; i 먼저 간단하게 규칙을 찾아보면 다음과 같다.i = 0A (= A*1 + B*0)i = 1B (= B*0 + B*1)i = 2A + Bi = 3A + ..
[백준 1263번] 시간 관리 (C++) 문제 링크 : https://www.acmicpc.net/problem/1263 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N, a, b;vectorv;int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> N; for(int i=0; i> a >> b; v.push_back({b, a}); } sort(v.begin(), v.end(), greater()); //일을 끝내야 하는 시간이 큰 값부터 정렬 int cur = v[0].first - v[0].second; //현..
[백준 3151번] 합이 0 (C++) 문제링크 : https://www.acmicpc.net/problem/3151 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N;int arr[10001];int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> N; for(int i=0; i> arr[i]; sort(arr, arr+N); ll result = 0; for(int i=0; i 3가지 합이 0이 되는 경우를 찾아야 한다.이를 위해 2가지 값을 고정 (2가지 값의 합) 시켜 놓고 나머지 1개의 값을 이분 탐색을 통해 찾아준다...
[백준 2141번] 우체국 (C++) 문제링크 : https://www.acmicpc.net/problem/2141#include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N;ll sum = 0;vectorv;int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> N; for(int i=0; i> a >> b; v.push_back({a, b}); sum+=b; } sort(v.begin(), v.end()); ll tmp = 0; for(int i=0; i= (sum+1)/2) //정렬된 상태의 중앙값 출력 ..
[백준 19598번] 최소 회의실 개수 (C++) 문제링크 : https://www.acmicpc.net/problem/19598 #include using namespace std;typedef long long ll;typedef pair pii;const int MAX = INT_MAX;int N, B, C; //강의 갯수, 시작 시간, 종료 시간int cnt=1; //최소 강의실vectorv;priority_queue, greater> pq;int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> N; for(int i=0; i> B >> C; v.push_back({B, C}); } sort(v.begin(), v.end()); for(int i=..