백준 C, C++ 문제 11

25501번, 재귀의 귀재

https://www.acmicpc.net/problem/25501이 문제는 isPalindrome함수를 활용해서 함수의 반환 값과 recursion 함수의 호출 횟수를 출력하는 문제이다.우선 이 문제에서는 문자열을 사용하므로, stdio.h와 string.h를 불러온다.#include #include 이 문제를 쉽게 풀기 위해서 run_time이라는 전역 변수를 생성한다.int run_time;그 다음 이 문제에서 기본 적으로 준 recursion함수와 isPalindrome함수를 정의한다.int recursion(const char *s, int l, int r){ if(l >= r) return 1; else if(s[l] != s[r]) return 0; else return re..

10870번, 피보나치 수 5

https://www.acmicpc.net/problem/10870이 문제는 n을 주면, n번째 피보나치 수를 구하는 문제이다.우선 이전에 풀었던 문제인 팩토리얼 2를 응용해서 풀거기 때문에, unsigned long int는 그대로 사용하겠다.우선 기본 라이브러리를 불러온다.#include 재귀 함수를 이용해서 풀거기 때문에, fibonaci함수를 생성한다. (a와 b는 이전에 있던 숫자들이다.)(만약 C++이라면, 첫 a와 b를 기본 값으로 설정할 수 있다. a = 0, b = 0)unsigned long int fibonaci(int n, int a, int b);함수 내에서는 n이 0이면 0을 리턴하고, n이 3보다 작으면 a+b를 리턴하고, 전부 아니면 fibonaci(n-1, b, a+b)를 ..

27433번, 팩토리얼 2

https://www.acmicpc.net/problem/27433이 문제는 정수 N을 줄때, N 팩토리얼을 출력하는 문제이다.팩토리얼은 1부터 N까지의 곱을 의미한다. 따라서 5 팩토리얼이면, 5*4*3*2*1=120이다.이 코드를 짜기 전, C에서는 숫자의 범위가 파이썬처럼 무한하지 않기 때문에, 리턴 타입을 unsigned long int로 설정하였다.우선 기본 라이브러리를 불러온다.#include 그 다음 난 재귀함수로 문제를 풀거기 때문에, factorial함수를 생성한다. (unsigned long int는 부호가 없는 long int이기 때문에, 부호 비트가 없어서 더욱 큰 숫자의 범위를 표현할 수 있다.)unsigned long int factorial(int n);함수 내에서는 1보다 n..

10871번, X보다 작은 수

https://www.acmicpc.net/problem/10871이 문제는 n개로 이루어진 수열 a와 정수 x를 주고, a에서 x보다 작은 수를 전부 출력하는 문제이다.기본 입출력 라이브러리인 stdio.h를 불러온다.#include 배열과, n, x를 생성하고int arr[10000];int n, x;scanf로 n과 x를 입력받는다.scanf("%d %d", &n, &x);for 문으로 배열을 입력받는다.for (int i = 0; i 그 후, x보다 작은 것들을 for 문으로 출력한다.for (int i = 0; i 전체 코드#include int main(){ int arr[10000]; int n, x; scanf("%d %d", &n, &x); for (int i = 0..

10807번, 개수 세기

https://www.acmicpc.net/problem/10807이 문제는 N개의 정수가 주어지면, 정수 v가 몇 개인지 구하는 프로그램이다.입출력 라이브러리인 stdio.h를 불러온다.#include 배열을 생성하고, n과 v, num를 생성한다.int arr[100];int n, v, num = 0;scanf로 n을 입력받고scanf("%d", &n);for 문으로 array를 입력받는다.for (int i = 0; i 이후 v를 입력받고scanf("%d", &v);for 문으로 배열에서 v와 일치하는 값의 수를 구한다.for (int i = 0; i 최종 코드#include int main(){ int arr[100]; int n, v, num=0; scanf("%d", &n); ..

10818번, 최소, 최대

https://www.acmicpc.net/problem/10818이 문제는 N개의 정수가 주어질 떄, 최솟값과 최댓값을 구하는 문제이다.우선 기본 입출력 라이브러리를 불러온다.#include 그 다음 정수 배열과 N, min, max를 생성한다.int arr[1000000];int n, min = 1000000, max = -1000000;그 다음 scanf로 n을 입력 받고scanf("%d", &n);for 문으로 배열을 입력받는다.for (int i = 0; i 그 다음 for문으로 배열 내 min과 max를 구한다.for (int i = 0; i arr[i])? max : arr[i];}최종 코드(참고 - for문을 두 번 쓰는 것은 최소한 이 문제에서는 효율적이지 않다. 따라서 나는 하나의 f..

1008번, A/B

https://www.acmicpc.net/problem/1008이 문제는 정수 A와 B를 입력받고, A/B(A를 B로 나눈 몫)를 출력하는 문제이다.scanf와 printf를 쓰기위한 라이브러리를 불러온다.#include 그 후 A와 B를 생성한다.int A, B;그 다음 A와 B를 입력받는다.scanf("%d %d", &A, &B);그 다음 결과 값을 출력한다.printf("%d", A/B);최종 코드#include int main(void){ int A, B; scanf("%d %d", &A, &B); printf("%d", A/B); return 0;}

10998번, AxB

https://www.acmicpc.net/problem/10998이 문제는 두 정수 A와 B를 입력 받고, A*B를 출력하는 문제이다.앞으로도 계속 쓰일 기본적인 라이브러리를 불러온다.#include 그 다음 입력 받기 위해 A와 B를 생성한다.int A, B;그 다음 scanf로 입력을 받는다.scanf("%d %d", &A, &B);그 다음 결과 값을 출력하면 된다.printf("%d", A*B);최종 코드#include int main(void){ int A, B; scanf("%d %d", &A, &B); printf("%d", A*B); return 0;}

1001번, A-B

https://www.acmicpc.net/problem/1001이 문제는 두 정수 A와 B를 입력받고, A-B를 출력하면 되는 문제이다.우선 printf와 scanf를 사용하기 위해 입출력 라이브러리를 불러온다.#include 그 다음 두 정수를 입력받기 위해 변수를 생성한다.int A, B;그리고 이제 scanf로 입력을 받는다.scanf("%d %d", &A, &B);이제 결과 값을 출력하면 된다.printf("%d", A-B);최종 코드#include int main(void){ int A, B; scanf("%d %d", &A, &B); printf("%d", A-B); return 0;}(return 0은 main함수가 int를 반환하기 위해서 사용하나, 안 써도 대부분은 문제..

1000번, A+B

https://www.acmicpc.net/problem/1000이 문제는 두 정수 A와 B를 입력받고, A+B의 값을 출력하는 문제이다.우선 include로 입출력 헤더 파일인 stdio.h를 불러온다.#include 그 다음 A와 B를 입력받기 위해 초기화한다.int A, B;이제 A와 B를 입력 받는다.scanf("%d %d", &A, &B);(여기서 %d는 10진수 숫자 포멧 문자이고, &는 주소값을 나타내는 역할을 한다)그 다음 printf로 A+B를 출력한다.printf("%d", A+B);최종 코드#include int main(void){ int A, B; scanf("%d %d", &A, &B); printf("%d", A+B); return 0;}(굳이 void를 쓸 필..