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
'백준 알고리즘 단계별 풀이 (문제 수) > 문자열 (10)' 카테고리의 다른 글
[C++] 그룹 단어 체커 : 1316번 (0) | 2022.07.03 |
---|---|
[C++] 다이얼 : 5622번 (0) | 2022.07.03 |
[C++] 단어의 갯수 : 1152번 (0) | 2022.07.03 |
[C++] 단어 공부(가장 많은 알파벳 찾기) : 1157번 (0) | 2022.07.02 |
[C++] 문자열 반복 / 단어 재조합하기 : 2675번 (0) | 2022.06.28 |