백준 2908번: 상수 / C++ 문제풀이

Been·2023년 11월 14일
0

백준

목록 보기
16/23

한 줄 요약 :

문자열의 순서를 뒤집어 ascii 코드를 이용해 정수로 표현한다.

풀이 :

1. 두 수 a,b를 문자열 char로 받는다.

이 때 세자리 수이므로 [4]칸짜리 문자열을 만든다.

char a[4];
char b[4];
cin >> a >> b;

2. a,b의 순서를 각각 뒤집어준다.

임시변수 change를 만들고 처음과 끝의 문자를 서로 바꿔준다.

for (int i = 0; i < 3; i++)
	{
		int change = a[2];
		a[2] = a[0];
		a[0] = change;
        //
		change = b[2];
		b[2] = b[0];
		b[0] = change;

3. 뒤집힌 순서의 문자열을 정수로 담아낸다.

char를 int로 담을 경우 문자열 숫자는 ascii 코드와 48이 차이난다.
각 문자에서 48을 빼준 뒤 자리수만큼 할당된 0을 붙여준다.

int aReverse = (a[0] - 48) * 100 + (a[1] - 48) * 10 + (a[2] - 48);
int bReverse = (b[0] - 48) * 100 + (b[1] - 48) * 10 + (b[2] - 48);

4. 정수로 담아낸 숫자들을 비교하여 큰 수를 출력한다.

if (aReverse > bReverse)
	cout << aReverse;
else
	cout << bReverse;

<C++ code>

#include <iostream>
using namespace std;
int main()
{
	char a[4];
	char b[4];
	cin >> a >> b;

	for (int i = 0; i < 3; i++)
	{
		int change = a[2];
		a[2] = a[0];
		a[0] = change;

		change = b[2];
		b[2] = b[0];
		b[0] = change;
	}
	int aReverse = (a[0] - 48) * 100 + (a[1] - 48) * 10 + (a[2] - 48);
	int bReverse = (b[0] - 48) * 100 + (b[1] - 48) * 10 + (b[2] - 48);
	if (aReverse > bReverse)
		cout << aReverse;
	else
		cout << bReverse;
}	
profile
콧콧코코콧코콧ㅅ

0개의 댓글