Computer Science/Algorithm Problem

백준] 2864 - 5와 6의 차이

TwinParadox 2017. 12. 9. 08:50
728x90

시간 제한 : 1초

메모리 제한 : 128MB




입력

첫째 줄에 두 정수 A와 B가 주어진다. (1 <= A,B <= 1,000,000)




출력

첫째 줄에 상근이가 구할 수 있는 두 수의 합 중 최소값과 최대값을 출력한다.




소스코드

#include <iostream>
#include <string>
using namespace std;
int main(void)
{
	string a, b;
	int alen, blen, s1, s2;
	cin >> a >> b;
	alen = a.length(), blen = b.length();
	for (int i = 0; i < alen; i++)
		if (a[i] == '5')
			a[i] = '6';
	for (int i = 0; i < blen; i++)
		if (b[i] == '5')
			b[i] = '6';
	s1 = stoi(a) + stoi(b);
	for (int i = 0; i < alen; i++)
		if (a[i] == '6')
			a[i] = '5';
	for (int i = 0; i < blen; i++)
		if (b[i] == '6')
			b[i] = '5';
	s2 = stoi(a) + stoi(b);
	cout << s2 << ' ' << s1;
}




Tip

이 문제를 문자열 처리, 수학으로 분류해두고 있다. 필자는 수학적으로 바로 떠오르는 것이 없어 문자열 처리로 접근했고, C++의 string과 stoi() 함수를 이용해서 쉽게 문제를 풀었다. 참고로 stoi()를 사용하려면 C++ 11 이상의 컴파일러를 사용해야 한다는 점을 알아두자.

728x90