본문 바로가기
백준 알고리즘 단계별 풀이 (문제 수)/문자열 (10)

[C++] 상수(세자리 수 뒤집어서 크기비교) : 2908번

by 17번 일개미 2022. 7. 3.
728x90

문제

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

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


예제 입력

734 893

예제 출력

437

문제 정리

결론적으로, 두 세자리 수를 입력받고 각각의 숫자를 뒤집은 후 크기비교를 하여 큰 쪽을 출력하면 된다.

 

풀이

#include <iostream>
#include <string>
using namespace std;

int MakeNewNumber(string num);

int main()
{
	string num1; string num2; // 두 세자리 수
	cin >> num1 >> num2; // 입력
	cin.ignore();

	int newNum1 = MakeNewNumber(num1); // 수의 자리를 바꾸기
	int newNum2 = MakeNewNumber(num2);

	if (newNum1 > newNum2) // 큰 수를 출력
	{
		cout << newNum1;
	}
	else cout << newNum2;
}

int MakeNewNumber(string num) // 자리바꾸기
{
	int temp1 = (int)num[0] - 48; // 한자리씩 추출
	int temp2 = (int)num[1] - 48; // 숫자로 변경
	int temp3 = (int)num[2] - 48;

	int newNum = temp3 * 100 + temp2 * 10 + temp1;
	// 바꾼 수를 계산하여 리턴
	return newNum;
}

 

로직

1. 문자열의 형태로 두 세자리 수를 입력받는다.

2. 입력받은 문자열을 한 자리 씩 분리하여 아스키코드 값 연산을 통해 int형의 숫자로 만들어서 임시저장한다.

3. 각 자리 수의 위치를 바꾸고, 자리 수에 맞게 100과 10을 곱해 새로운 수를 만들어 준다.

4. 새로운 수 끼리 크기를 비교하고 큰 쪽을 출력한다.

728x90