[ 문제 ]
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다.
이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다.
상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.
상수는 수를 다른 사람과 다르게 거꾸로 읽는다.
예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다.
따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.
두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.
[ 입력 ]
첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다.
두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.
[ 출력 ]
첫째 줄에 상수의 대답을 출력한다.
[ 작성한 코드 ]
#include <stdio.h>
int main(int argc, char *argv[])
{
char A[4];
char B[4];
int i,j=0,k=0;
scanf("%s %s",A,B);
for(i = 3; i > 0; i--)
{
j = j * 10 + A[i-1] - '0';
k = k * 10 + B[i-1] - '0';
}
if(j > k)
{
printf("%d",j);
}
else if(j < k)
{
printf("%d",k);
}
return 0;
}
이 문제는 풀이방법이 다양하다고 생각한다.
일단 문자열 파트로 분류되어있어 문자열을 사용해 문제를 풀이하였지만 문자열을 사용하지 않고도 문제를 풀 수 있다.
입력받은 세자리의 자연수의 자리를 역순으로 변경하기 위해 수식을 이용했다.
ex ) 734 입력
i값 | A[ i ]값 | A[ i - 1 ] -'0' (정수변환) | j = j * 10 + A[ i - 1 ] - '0'; | a값 |
3 | '4' | 4 | 0 * 10 + 4 | 4 |
2 | '3' | 3 | 4 * 10 + 3 | 43 |
1 | '7' | 7 | 43 * 10 + 7 | 437 |
이렇게 A와 B의 값을 정수형으로 변환해 그 값을 비교하는 방법으로 문제를 해결했다.
알고리즘 분류
- 수학
- 구현
'백준 알고리즘 코딩' 카테고리의 다른 글
[C언어] 백준 11718번 그대로 출력하기 (0) | 2025.03.23 |
---|---|
[C언어] 백준 5622번 다이얼 (0) | 2025.03.23 |
[C언어] 백준 1152번 단어의 개수 (0) | 2025.03.22 |
[C언어] 백준 2675번 문자열 반복 (0) | 2025.03.22 |
[C언어] 백준 10809번 알파벳 찾기 (0) | 2025.03.22 |