본문 바로가기

분류 전체보기702

[백준 2588] 곱셈 [C] 소스코드 #include int main() { int A, B; scanf("%d %d", &A, &B); printf("%d\n%d\n%d\n%d", A*(B%10), A*((B%100)/10), A*(B/100), A*B); } 출처 2588번: 곱셈 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. www.acmicpc.net 2021. 7. 18.
[백준 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 2021. 7. 18.
[백준 2750] 수 정렬하기 [C] 풀이 처음에는 입력받은 숫자에 해당하는 배열을 1로 초기화한 후 출력해주는 방법으로 접근했으나, 시작부터 틀렸다. #include #define MAX 1001 int main(){ int N, num, arr[MAX] = {0, }; scanf("%d", &N); while (N--){ scanf("%d", &num); arr[num-1] = 1; } for (int i = 0; i < MAX; i++) if (arr[i]) printf("%d\n", i + 1); } 아마도, "수의 절대값이 1,000보다 작거나 같은 정수"라는게 양수가 아닌, 음수 또한 입력되는 것으로 추측되기 때문에 틀린 것 같다. Insertion Sort를 사용해 해결했다. 소스코드 #include int main() { in.. 2021. 7. 18.
[백준 10989] 수 정렬하기 3 [C] 풀이 "수 정렬하기 2"와는 반대로 시간효율보다 공간효율이 중시되는 문제이기 때문에 동일한 코드를 사용하면 틀릴 것 이다. 그래서, 주어지는 숫자의 개수를 배열에 저장 후, 각 숫자의 개수만큼 반복해서 출력하는 방법으로 해결했다. 소스코드 #include #define MAX 10000 int main(){ int N, num, cnt[MAX] = {0, }; scanf("%d", &N); while (N--){ scanf("%d", &num); cnt[num-1]++; } for (int i = 0; i < MAX; i++) if (cnt[i] != 0) for (int j = 0; j < cnt[i]; j++) printf("%d\n", i + 1); } 출처 10989번: 수 정렬하기 3 첫째 줄에.. 2021. 7. 17.
[백준 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 2021. 7. 17.
[백준 1978] 소수 찾기 [C] 풀이 입력받은 수 num이 num/2 이하의 범위 중에 소수가 존재하는지 몇 줄 내로 간단하게 해결할 수 있지만, 에라토스테네스의 체를 이용해 효율적으로 풀이해봤다. 에라토스테네스의 체는 고대 그리스 수학자 에라토스테네스가 발견한 소수를 구하는 알고리즘이다. N까지의 수는, N의 제곱근보다 작은 정수들의 배수를 모두 지우고 남는 수가 소수라는 사실을 알 수 있다. 이번 문제에서 주어지는 최대의 자연수는 1000으로, 1000의 제곱근인 31.62xxx보다 작은 정수 31까지의 배수들을 제외하고 남은 수들이 소수임을 알 수 있다. 하지만, 문제에서 입력받는 수가 소수인지 확인하기 위해 탐색하는 과정이 효율적이지 못해 위에서 조작한 배열을 소수와 소수가 아닌 구간으로 정렬해주었다. int arr[MAX], .. 2021. 7. 17.