프로그래밍 언어/C

C언어 백준 2908 상수 해설

happy_life 2021. 9. 10. 17:20

https://www.acmicpc.net/problem/2908

 

2908번: 상수

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두

www.acmicpc.net

 

문제

 

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.

상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.

두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.

 

 

 

풀이

 

 

idea

1) 입력되는 것이 두 개로 고정되어있음. -> scanf 두개

2)  자리수 -> 몫과 나머지로 구한 다음 곱을 해줘서 뒤집은 숫자를 만들기

3) 세자리수로 고정되어있음 -> 각자리수 3개씩 총 6개의 변수가 필요

4) 0 이 포함되어있지 않음 -> 300 같은 예외를 고려하지 않아도 됌

5) 두 수는 같지 않음 -> 같은 수일 때의 경우를 예외처리 하지 않아도 됌

 

 

풀이순서

 

1) 세자리 수 두 개 입력받기

//1) 세자리 수 두 개 입력받기
	scanf("%d %d", &A, &B);

2)숫자 뒤집기

//2)숫자 대입하기 
	A_100 = A / 100;
	A_10 = (A / 10) % 10;
	A_1 = A % 10;
	  
	
	B_100 = B / 100;
	B_10 = (B / 10) % 10;
	B_1 = B % 10;


	//2)숫자 뒤집기
	
	A = (A_1 * 100) + (A_10 * 10) + (A_100 * 1);
	B = (B_1 * 100) + (B_10 * 10) + (B_100 * 1);

 

몫 과 나머지를 이용하여 각 자리수에 넣어주고 반대로 넣어줌

 

3)숫자 비교하기

	//3)숫자 비교하기

	if (A > B)
	{
		printf("%d", A);
	}
	else
	{
		printf("%d", B);
	}

같다라는 조건 등이 없기 때문에

A>B 하고 바로 else를 씀