본문 바로가기

Algorithm

(2087)
백준(baekjoon)(BaekJoon)코딩 1929번:에라토스테네스의 체 답 // 1000이하의 소수들의 배수에 속하지 않아야 소수가 나온다 // 최종으로 구한 소수 중 N,M사이에 있는 소수만 출력해야한다 1234567891011121314151617181920212223242526272829303132333435363738#include #include using namespace std;int main(){int M, N, cnt = 0, p = 0, total = 0; cin >> M >> N;int *arr = new int[N - M + 1];for (int i = M; i
백준(baekjoon)(BaekJoon)코딩 2751번:힙 정렬(Heap Sort) 답 //배열의 개수를 2등분 한다. 한쪽은 배열 개수가 전체에서 2로 나눈 수, 다른 한 쪽은 전체에서 그 수를 뺀 수. // 각각의 첫번째를 포인터로 지정한다. // 각 [] [] 배열 끼리 최소 값을 찾는다. // 최소값을 찾은 것 서로 비교 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778#include #include using namespace std; void swap(int* a, int* b){int t = *a;*a = *b;*b = t;} void maxHeapify(int ar..
(C++) - 백준(BOJ) 10828번 : 스택(stack) 답 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 스택을 써보는 기초문제였습니다 Code #include using namespace std; int n; stack st; int main(){ cin >> n; while(n--){ string op; cin >> op; if(op == "push"){ int x; cin >> x; st.push(x); } else if(op == "pop"){ if(st.size()) cout
(C++) - 백준(BOJ) 2747번 : 피보나치 수열 답 https://www.acmicpc.net/problem/2747 2747번: 피보나치 수 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된�� www.acmicpc.net 간단한 재귀함수 또는 for문으로 작성할 수 있는 dp문제입니다. Code : 1. for문 : 1234567891011121314151617#include using namespace std;int main(){int num;cin >> num; //방 개수int *arr = new int [num+1];arr[0] = 0;arr[1] = 1;if(num =..
(C++) - 백준(BOJ) 2748번 : 피보나치 수 2 https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 대표적인 dp문제였습니다. Code 1. Top down dp #include #define ll long long using namespace std; ll fibo[91], n; ll dp(int num){ if(num == 1 || num == 2) return 1; ll &ret = fibo[num]; if(ret) return ret; ret = 0; ..
(C++) - 백준(BOJ) 10845번 : 큐(queue) https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 자료구조 queue를 사용하는 문제였습니다. Code #include using namespace std; int n; queue q; int main(){ cin >> n; while(n--){ string op; cin >> op; if(op == "push"){ int x; cin >> x; q.push(x); } else if(op == "pop"){ if(q.size())..
(C++) - 백준(BOJ) 11050번 : 이항계수 1 https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 조합을 구하는 문제였습니다. 풀이방법 1. 이항정리를 이용하는 법 : nCk = n-1Ck +n-1Ck-1 2. 그냥 구하기 Code 1. 이항정리 이용 #include using namespace std; int n,k,a[11][11]; //nCk = n-1Ck + n-1Ck-1 int dp(int n, int k){ if(n == k || k == 0) return 1; int &ret = a[n][k]; if(ret) return ret; ret = dp(n-1,k..