백준 C++33 [백준 C++] 16565번: N포커 1. 문제https://www.acmicpc.net/problem/16565 2. 알고리즘 분류수학다이나믹 프로그래밍조합론포함 배제의 원리 3. 소스 코드#include #define MOD 10007using namespace std;int N;int Combination[53][53];// 조합 계산 함수int cal_combination(int n, int r) { if (Combination[n][r]) return Combination[n][r]; // 이전에 계산해놓은 값이 있으면, 바로 반환 else if (n == r || r == 0) Combination[n][r] = 1; // n=r 이거나, r = 0일 때, 1 반환 else { Combination[n][r] = cal_com.. 2024. 9. 5. [알고리즘] 그리디 알고리즘 1. 문제 https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net https://www.acmicpc.net/problem/10775 10775번: 공항 예제 1 : [2][?][?][1] 형태로 도킹시킬 수 있다. 3번째 비행기는 도킹시킬 수 없다. 예제 2 : [1][2][3][?] 형태로 도킹 시킬 수 있고, 4번째 비행기는 절대 도킹 시킬 수 없어서 이후 추가적인 도킹은 불 www.a.. 2024. 4. 6. [백준 C++] 1202번: 보석 도둑 1. 문제 https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 2. 알고리즘 분류 자료 구조 그리디 알고리즘 정렬 우선순위 큐 3. 소스 코드 #include #include #include #include #define MAX_N 300000 #define MAX_K 300000 using namespace std; int N, K; pair gems[MAX_N]; int backpac.. 2024. 4. 6. [백준 C++] 14888번: 연산자 끼워넣기 1. 문제 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 2. 알고리즘 분류 브루트포스 알고리즘 백트래킹 3. 소스코드 #include #include #include #define MAX_N 11 using namespace std; int N; int max_val = -1000000000; int min_val = 1000000000; int numbers[MAX_N]; int .. 2024. 4. 6. [백준 C++] 7579번: 앱 1. 문제 https://www.acmicpc.net/problem/7579 7579번: 앱 입력은 3줄로 이루어져 있다. 첫 줄에는 정수 N과 M이 공백문자로 구분되어 주어지며, 둘째 줄과 셋째 줄에는 각각 N개의 정수가 공백문자로 구분되어 주어진다. 둘째 줄의 N개의 정수는 현재 활 www.acmicpc.net 2. 알고리즘 분류 다이나믹 프로그래밍 배낭 문제 3. 소스 코드 #include #include using namespace std; int memory_table[101]; int cost_table[101]; int dp[101][10001]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); // N : 앱의.. 2023. 12. 3. [백준 C++] 2623번: 음악프로그램 1. 문제 https://www.acmicpc.net/problem/2623 2623번: 음악프로그램 첫째 줄에는 가수의 수 N과 보조 PD의 수 M이 주어진다. 가수는 번호 1, 2,…,N 으로 표시한다. 둘째 줄부터 각 보조 PD가 정한 순서들이 한 줄에 하나씩 나온다. 각 줄의 맨 앞에는 보조 PD가 담당한 www.acmicpc.net 2. 알고리즘 분류 그래프 이론 위상 정렬 3. 소스 코드 Key Point) 1. 순서가 정해져 있는 일련의 수열을 차례대로 출력하는 문제는 '위상 정렬' 알고리즘을 사용한다. #include #include #include using namespace std; int N, M; int arr[1001]; int inDegree[1001]; int visited[1.. 2023. 10. 3. [백준 C++] 2473번: 세 용액 1. 문제 https://www.acmicpc.net/problem/2473 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 2. 알고리즘 분류 정렬 이분 탐색 두 포인터 3. 소스 코드 Key Point) 1. 투 포인터 알고리즘을 활용하기 위해 정렬한다. 2. 3개의 값을 비교할 때는 하나를 정해 놓고 2개의 값을 '투 포인터' 알고리즘을 통해 계산한다. #include #include #include using namespace std; long long solutions[5000].. 2023. 10. 3. [백준 C++] 2252번: 줄 세우기 1. 문제 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 2. 알고리즘 분류 그래프 이론 위상 정렬 3. 소스 코드 Key Point) 1. 그래프를 이용하여 학생 순서를 정리한다. 2. '위상 정렬'을 사용하여 그래프 순서대로 값을 정렬한다. #include #include #include #define MAX_N 32001 using namespace std; int N, M; int visite.. 2023. 10. 3. [백준 C++] 1644번: 소수의 연속합 1. 문제 https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 2. 알고리즘 분류 수학 정수론 두 포인터 소수 판정 에라토스테네스의 체 3. 소스 코드 Key Point) 1. 소수를 찾는 문제는 '에라토스테네스의 체'를 활용하면 빠르게 구할 수 있다. 2. 연속 부분 수열 문제는 '두 포인터'를 활용하면 빠르게 구할 수 있다. #include #include using namespace std; bool is_prime[4000006]; vector prime_num; int main() { ios_base::sync_with_stdio(false); cin.tie.. 2023. 10. 3. [백준 C++] 1005번: ACM Craft 1. 문제 https://www.acmicpc.net/problem/1005 1005번: ACM Craft 첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N과 건물간의 건설순서 규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부 www.acmicpc.net 2. 알고리즘 분류 다이나믹 프로그래밍 그래프 이론 위상 정렬 3. 소스 코드 Key Point) 1. 순서가 정해져 있는 일련의 작업을 차례대로 수행할 때는 '위상 정렬' 알고리즘을 활용한다. 2. '위상 정렬' 알고리즘을 통해 탐색하면서 최대로 걸리는 시간을 갱신해 나간다. #include #include #include #include using namespace std; i.. 2023. 10. 2. 이전 1 2 3 4 다음