목록백준 (222)
VioletaBabel
재귀로 풀기 적당한 문제'n번째 ~를 계산하는 알고리즘''첫 n개를 나열하는 코드''모든 ~를 계산하는 메소드' --접근법 1. 상향식 접근법가장 간단한 경우에 대한 풀이법보터 발견한 후 점진적으로 늘려간다. 2. 하향식 접근법문제들을 어떻게 하면 부분적으로 나눌 수 있는지 생각해본다.나뉜 부분문제들이 서로 겹치지 않도록 주의한다. 3. 반반 접근법절반씩 재귀적으로 탐색해나가는 방법ex) 병합 정렬 --재귀적 해법 vs 순환적 해법재귀적 알고리즘은 공간 효율성에 좋지 않다.허나 순환적으로 구현된 코드가 더 복잡할 때가 많다. --동적 계획법재귀적 알고리즘과 반복적으로 호출되는 부분 문제를 찾는 것이 관건.상향식 접근을 동적 프로그래밍, 하향식 접근을 메모이제이션이라고 함. --피보나치 수 구하기 1. 하..
1234567891011121314151617#include#define m(a,b) (((a)
소수 모든 자연수는 소수의 곱으로 나타낼 수 있다.x = 2^j0 * 3^j1 * 5^j2 * 7^j3 * 11^j4 * 13^j5 * 17^j6 … --소수의 가분성(divisibility) x = 2^j0 * 3^j1 * 5^j2 * 7^j3 * 11^j4 * 13^j5 * 17^j6 …y = 2^k0 * 3^k1 * 5^k2 * 7^k3 * 11^k4 * 13^k5 * 17^k6 … gcd = greatest common divisor = 최대공약수gcd(x,y) = 2^min(j0,k0) * 3^min(j1,k1) * 5^min(j2,k2) ... lcm = least common multiple = 최소공배수lcm(x,y) = 2^max(j0,k0) * 3^max(j1,k1) * 5^max(j2..
1234567891011#include int main(){ long long int n[100]; int t, i; n[0] = n[1] = n[2] = 1; for (int i = 3; i
123456789101112131415161718192021#include int main(){ int tri[44], t, k; bool next = 1; for (int i = 1; i
12345678910111213141516#include int main(){ int w, h, p, q, t, dx=1, dy=1; scanf("%d %d %d %d %d", &w, &h, &p, &q, &t); while (t--) { if (p == w || p == 0) dx *= (-1); if (q == h || q == 0) dy *= (-1); p += dx; q += dy; } printf("%d %d", p, q);}Colored by Color Scriptercs
123456789101112131415161718#include#includeint main(){ char a[101]; scanf("%s", &a); int ans = 0; for(int i = 0; a[i] != '\0'; ++i) switch (a[i]) { case 'a': case 'e': case 'i': case 'o': case 'u': ++ans; break; } printf("%d", ans);}Colored by Color Scriptercs
123456789101112131415#include#includeint main(){ char a[101]; scanf("%s", &a); int b = 1; for (int l = 0, r = strlen(a) - 1; l
12345678910111213#includeint main(){ int n, k, up=1; scanf("%d %d", &n, &k); for (int i = n; i > 1; --i) up *= i; for (int i = k; i > 1; --i) up /= i; for (int i = (n - k); i > 1; --i) up /= i; printf("%d", up);}Colored by Color Scriptercs