본문 바로가기
카테고리 없음

[C] 2908: 상수

by soeayun 2023. 7. 8.

이 문제는 여러가지 풀이가 가능하지만 입력 조건이 매우 간단하기 때문에 밑에 소스코드처럼 작성하면 쉽게 풀 수 있다.

#include <stdio.h>

int main(void)
{
  int a,b;
  scanf("%d %d",&a,&b);
  int x,y,z;
  z=a%10; //일의 자리수
  y=(a/10)%10; //십의 자리수
  x=(a/100)%10; //백의 자리수
  int result1= z*100+y*10+x;
  z=a%10; //일의 자리수
  y=(a/10)%10; //십의 자리수
  x=(a/100)%10; //백의 자리수
  int result2= z*100+y*10+x;

  if(result1>result2)
     printf("%d",result1);
  else
     printf("%d",result2);
  

  return 0;
 
}

다만, 좀 더 일반적인 풀이를 위해서는 아래 소스코드 처럼 새로운 함수를 만들어 푸는 것이 효과적일 수 있다.

또한 while문을 이용해 더 쉽게 back함수를 만들 수도 있다.

#include <stdio.h>

/*만약 조금 더 긴 수를 여러가지 비교해야했다면 main함수에서 입력을 int가 아닌 int 형 배열을 받았을 것이다. 
배열로 받고 몇자리수 인지 알아낸 다음 back함수에서
새로운 배열과 while문을 같이 사용하여 꺼꾸로된 수를 받는 것이 좀 더 일반적인 풀이이다*/
 
int back(int n) //입력받은 자연수 n을 거꾸로 반환하는 함수
{
  int a,b,c;
  c=n%10; //일의 자리수
  b=(n/10)%10; //십의 자리수
  a=(n/100)%10; //백의 자리수
  return c*100+b*10+a;
  
}

int main(void)
{
  int a,b;
  scanf("%d %d",&a,&b);
  a=back(a);
  b=back(b);
  int result=a>b?a:b;

  printf("%d",result);
  return 0;
 
}