[백준 10430] 나머지 [C] 소스코드 #include int main() { int A, B, C; scanf("%d %d %d", &A, &B, &C); printf("%d\n%d\n%d\n%d", (A+B)%C, ((A%C)+(B%C))%C, (A*B)%C, ((A%C)*(B%C))%C); } 출처 10430번: 나머지 첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000) www.acmicpc.net PS/Baekjoon Online Judge 2021.07.18
[백준 1085] 직사각형에서 탈출 [C] 풀이 (x, y)가 경계선(x, 0), (0, y)과, 직선 x = w, y = h 중 어디까지의 거리가 최솟값인지 구하면 된다. 소스코드 #include #define MIN(a,b) (a < b ? a: b) int main(){ int x, y, w, h, min; scanf("%d %d %d %d", &x, &y, &w, &h); printf("%d", MIN(MIN(w - x, x), MIN(h - y, y))); } 출처 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. www.acmicpc.net PS/Baekjoon Online Judge 2021.07.17
[백준 1978] 소수 찾기 [C] 풀이 입력받은 수 num이 num/2 이하의 범위 중에 소수가 존재하는지 몇 줄 내로 간단하게 해결할 수 있지만, 에라토스테네스의 체를 이용해 효율적으로 풀이해봤다. 에라토스테네스의 체는 고대 그리스 수학자 에라토스테네스가 발견한 소수를 구하는 알고리즘이다. N까지의 수는, N의 제곱근보다 작은 정수들의 배수를 모두 지우고 남는 수가 소수라는 사실을 알 수 있다. 이번 문제에서 주어지는 최대의 자연수는 1000으로, 1000의 제곱근인 31.62xxx보다 작은 정수 31까지의 배수들을 제외하고 남은 수들이 소수임을 알 수 있다. 하지만, 문제에서 입력받는 수가 소수인지 확인하기 위해 탐색하는 과정이 효율적이지 못해 위에서 조작한 배열을 소수와 소수가 아닌 구간으로 정렬해주었다. int arr[MAX], .. PS/Baekjoon Online Judge 2021.07.17
[백준 2609] 최대공약수와 최소공배수 [C] 풀이 유클리드 호제법은 최대공약수를 구하는 알고리즘이다. 두 수 N, M (N > M)을 입력받는다. N을 M으로 나누었을 때의 몫과 나머지가 N, M이 되며 이 과정을 나머지가 0이 될 때 까지 반복한다.\ 나머지가 0이 될때의 N(몫)이 최대공약수이다. 두 수 N, M의 곱은 최대공약수(GCD)와 최소공배수(LCM)의 곱과 같다. 소스코드 #include int euclidean_gcd(int n, int m){ return m ? euclidean_gcd(m, n%m) : n; } int main(){ int n, m; scanf("%d %d", &n, &m); int gcd = euclidean_gcd(n, m); printf("%d\n%d", gcd, n*m / gcd); } 출처 및 참고자료 .. PS/Baekjoon Online Judge 2021.07.15
[백준 10998] A×B [C] 소스코드 #include int main(){ int A, B; scanf("%d %d", &A, &B); printf("%d", A*B); } 출처 10998번: A×B 두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오. www.acmicpc.net PS/Baekjoon Online Judge 2021.07.15
[백준 11720] 숫자의 합 [C] 풀이 문자열을 입력받고, 문자 '0'~'9'에 48을 뺀 아스키 코드 값이 숫자 0 ~ 9와 같다는 점을 이용해 해결하면 된다. 소스코드 #include int main(){ int N, sum = 0; char str[101]; scanf("%d %s", &N, str); for (int i = 0; i < N; i++) sum += str[i] - 48; printf("%d", sum); } 출처 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net PS/Baekjoon Online Judge 2021.07.15
[백준 10871] X보다 작은 수 [C] 소스코드 #include int main(){ int N, X, num; scanf("%d %d", &N, &X); while (N-- && scanf("%d", &num)) num < X && printf("%d ", num); } 출처 10871번: X보다 작은 수 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net PS/Baekjoon Online Judge 2021.07.14
[백준 10872] 팩토리얼 [C] 소스코드 #include int factorial(int n){ return (!n ? 1 : n * factorial(n-1)); } int main(){ int N; scanf("%d", &N); printf("%d", factorial(N)); } 출처 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net PS/Baekjoon Online Judge 2021.07.13
[백준 10952] A+B - 5 [C] 소스코드 #include int main(){ int A, B; while (1){ scanf("%d %d", &A, &B); if (A == 0 && B == 0) break; printf("%d\n", A+B); } } 제출 10952번: A+B - 5 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net PS/Baekjoon Online Judge 2021.07.13
[백준 10951] A+B - 4 [C] #include int main() { int A, B; while (EOF != scanf("%d %d", &A, &B) && printf("%d\n", A + B)); } 출처 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net PS/Baekjoon Online Judge 2021.07.13