1. 문제
https://www.acmicpc.net/problem/2908
2. 접근
단순하게 생각했을 때는, 입력받은 a와 b를 배열에 저장해 배열의 순서를 반대로 바꾸고
각 배열의 첫번째를 서로 비교, 같다면 각 배열의 두번째를 비교, 같다면 각 배열의 세번째를 비교하도록 생각했다.
"a[0] > b[0]" -> true -> a 출력
-> false -> "a[0] < b[0]" -> b 출력
-> "a[0] == b[0]" -> "a[1] > b[1]" -> true -> a 출력
-> false -> "a[1] < b[1]" -> b 출력
-> "a[1] == b[1]" -> "a[2] > b[2]" -> true -> a 출력
-> false -> "a[2] == b[2]" -> 정답오류
-> "a[2] < b[2]" -> b 출력
int main() {
int a[3], b[3];
scanf("%d %d", &a, &b);
ReverseArray(a);
ReverseArray(b);
for (int i = 0; i < 3; i++) {
if (a[i] > b[i])
printf("%d", a);
if (a[i] == b[i]) {
if (a[i + 1] > b[i + 1])
printf("%d", a);
else if (a[i + 1] == b[i + 1]) {
if (a[i + 2] > b[i + 2])
printf("%d", a);
}
}
else printf("%d", b);
}
}
ReserveArray 함수로 배열 a와 b를 각각 거꾸로 바꾸어주고, 조건문으로 a[0]~a[2]와 b[0]~b[2] 를 비교했다.
다시 생각해보니, 입력받는 수의 100의 자리수, 10의 자리수, 1의 자리수를 각각 나누어 배열 a[0]~a[2], b[0]~b[2]에 저장해야한다.
코드가 난잡하고 오류가 있어 더 간단한 방법을 고민했다.
그리고, 배열로 입력받아 처리할 수 있는 방법을 추가할 것이다.
3. 문제풀이
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a, b;
scanf_s("%d %d", &a, &b);
int A, B;
A = (a % 10) * 100 + ((a % 100) / 10) * 10 + a / 100; // a의 100의 자리수와 1의 자리수를 바꿈
B = (b % 10) * 100 + ((b % 100) / 10) * 10 + b / 100; // b의 100의 자리수와 1의 자리수를 바꿈
if (A > B)
printf("%d", A);
else printf("%d", B);
}
'PS > BOJ' 카테고리의 다른 글
[C] 백준 2960 : 에라토스테네스의 체 (0) | 2022.05.24 |
---|---|
[C] 백준 5622 : 다이얼 (0) | 2022.05.24 |
[C] 백준 1152 : 단어의 개수 (0) | 2022.05.24 |
[C] 백준 1978 : 소수찾기 (0) | 2022.05.20 |
[C] 백준 14681 : 사분면 고르기 (0) | 2022.05.16 |