본문 바로가기

Algorithm

(2139)
(C++) - 백준(BOJ)코딩 11047번 : 동전0 www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net greedy 문제였습니다. greedy로 푸는 것이 수학적으로 맞는지를 검증하는지가 중요합니다. 감으로 의존해 푸시면 제대로 문제를 풀 수 없습니다. 좋은 방법 중 하나는 귀류법으로 자신이 세운 가정이 맞는지를 증명해보는 것입니다. 귀류법을 통해 현재 최대 이익을 얻지 않으면 발생되는 손해가 있는지의 여부를 알 수 있습니다. 풀이방법 귀류법으로 증..
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1476번:날짜 계산 답 12345678910111213141516171819202122#include using namespace std;int main() { int e, s, m, E = 1, S = 1, M = 1, total = 1; cin >> e >> s >> m; while (1) { if (E == e&&S == s&&M == m) break; E++; if (E == 16) E /= 16; S++; if (S == 29) S /= 29; M++; if (M == 20) M /= 20; total++; } cout
(C++) - 백준(BOJ) 11653번 : 소인수분해 https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 간단한 수학문제였습니다. 풀이방법 1. n % cnt 의 결과가 양수 즉, 나머지가 남는다면 cnt를 나누어 떨어질때까지 1씩 증가시킵니다. 2. cnt를 출력합니다. Code #include using namespace std; int n; int main(){ cin >> n; int cnt = 2; while(n > 1){ int ret = n % cnt; if(ret) while((n % cnt)) cnt++; n /= cnt; cout
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1037번:약수 답 1234567891011121314#include using namespace std;int compare(const void*a, const void*b) { return *(int*)a - *(int*)b; }int main() { int N; cin >> N; int *a = new int[N]; for (int i = 0; i > a[i]; } qsort(a, N, sizeof(int), compare); cout
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 11728번:배열 합치기 답 1234567891011121314151617181920#include using namespace std;int compare(const void*a, const void*b){ return *(int*)a - *(int *)b;}int main() { int N, M; cin >> N >> M; int *a = new int[N + M]; for (int i = 0; i > a[i]; } qsort(a, N + M, sizeof(int), compare); for (int i = 0; i
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 5622번:다이얼 답 12345678910111213141516171819202122232425262728293031323334#include #include using namespace std;int a[15], sum;int main() { string w; cin >> w; for (int i = 0; i = 65 && w[i] = 68 && w[i] = 71 && w[i] = 74 && w[i] = 77 && w[i] = 80 && w[i] = 84 && w[i] = 87 && w[i]
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 2193번:이친수 답 1234567#includeint main(){ unsigned long long n,a=1,b=1,c=1; std::cin>>n; for(int i=2;i
(C++) - 백준(BOJ) 13900번 : 순서쌍의 곱의 합 답 www.acmicpc.net/problem/13900 13900번: 순서쌍의 곱의 합 첫 번째 줄에는 입력 받을 정수의 개수 N(2 ≤ N ≤ 100,000) 두 번째 줄에는 N 개의 정수가 주어진다. 이때 입력 받는 정수들의 범위는 0이상 10,000 이하이다. www.acmicpc.net for문을 사용해보는 문제였습니다. Code #include int main() { long long T, sum = 0, ans = 0; scanf("%lld", &T); int *a = new int[T]; for (int i = 0; i < T; i++) { scanf("%d", &a[i]); sum += a[i]; } for (int i = 0; i < T; i++) { ans += a[i] * (sum - ..