본문 바로가기

백준 연습

(10)
백준 11653 C언어 #include int main(void) { int N; scanf("%d", &N); int cnt = 2; while (N != 1) { if (N % cnt == 0) { printf("%d\n", cnt); N /= cnt; cnt = 2; } else cnt++; } return 0; }
백준 10857 c언어 #include #include #define MAXLEN 10001 int main(void) { char A[MAXLEN], B[MAXLEN], res[MAXLEN+1]; scanf("%s%s", A, B); int Alen = strlen(A), Blen = strlen(B); int cnt = 0, carry = 0, Avalue = 0, Bvalue = 0; while (--Alen >= 0 | --Blen >= 0) { if (Alen < 0)Avalue = 0; elseAvalue = A[Alen] - '0'; if (Blen < 0) Bvalue = 0; elseBvalue = B[Blen] - '0'; char tmp = Avalue + Bvalue + carry; carry = (cha..
백준 9663 C언어 백트래킹의 유명한 문제로 체스 판에 퀸을 서로 공격할 수 없게 놓는 문제다. #include int cnt = 0; int Arr[15][15] = { {0,}, }; void BackTracking(int N, int d) { for (int i = 0, k; i = 0) if (Arr[d - 1 - k][i - 1..
백준 15652 C언어 마찬가지로 코드에 큰 변화는 없다. #include int Arr[8] = { 0, }; void BackTracking(int N, int M, int d) { for (int i = 1, k; i i) break; } if (k == d) Arr[d] = i; else continue; } if (M == d + 1) { for (int n = 0; n < M; n++) printf("%d ", Arr[n]); printf("\n"); } else BackTracking(N, M, d + 1); } } int main() { int N, M; scanf("%d%d", &N, &M); BackTracking(N, M, 0); return 0; }
백준 15651번 C언어 15649, 15650 문제보다 중복체크를 하지않아 더 쉬워졌다. #include int Arr[7] = { 0, }; void BackTracking(int N, int M, int d) { for (int i = 1; i
백준 15650 C언어 코드는 15649번 문제와 등호 제외 똑같음... #include int Arr[8] = { 0, }; void BackTracking(int N, int M, int d) { for (int i = 1,k; i = i) break; } if (k == d) Arr[d] = i; else continue; } if (M - 1 == d) { for (int n = 0; n < M; n++) printf("%d ", Arr[n]); printf("\n"); } else BackTracking(N, M, d + 1); } } int main() { int N, M; scanf("%d%d", &N, &M); BackTracking(N, M, 0); return 0; }
백준 15649 C언어 #include void Backtracking(int Arr[], int N, int M, int d) { for (int i = 1; i
백준 9461 C언어 #include #include long long int *Arr; int main() { int T,N; scanf("%d", &T); for (int i = 0; i < T; i++) { scanf("%d", &N); Arr = (long long int*)malloc(sizeof(long long int)*N); for (int i = 0; i < N; i++) { if(i==0) Arr[0] = 1; else if(i==1) Arr[1] = 1; else if(i==2) Arr[2] = 1; else if(i==3) Arr[3] = 2; else if(i==4) Arr[4] = 2; else Arr[i] = Arr[i - 5] + Arr[i - 1]; } printf("%lld\n", Arr[N ..
백준 1003번 C언어 #include #include typedef struct zeroOne { int zero; int one; }zOne; zOne *Arr; void fibonacci(int n) { if (n == 0) { Arr[0].zero = 1; Arr[0].one = 0; } else if (n == 1) { Arr[1].zero = 0; Arr[1].one = 1; } else { Arr[n].zero = Arr[n - 1].zero + Arr[n - 2].zero; Arr[n].one = Arr[n - 1].one + Arr[n - 2].one; } } int main() { int T , N; scanf("%d", &T); for (int i = 0; i < T; i++) { scanf("%d", &N..
백준 2748 C언어 이 문제는 피보나치 수열의 n번째 수를 구해야한다. 단순하게 재귀함수로 구하면 알고리즘의 속도가 느리기 때문에 피보나치 수열의 계산결과를 저장할 배열을 사용했다. #include #include long long int *Arr; void Fibo(int n) { Arr[n] = Arr[n - 1] + Arr[n - 2]; } int main() { int n; scanf("%d", &n); Arr = (long long int*)malloc(sizeof(long long int)*(n + 1)); Arr[0] = 0; Arr[1] = 1; for (int i = 2; i