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
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 2941 - 크로아티아 알파벳(COCI 2008/2009) (0) | 2017.12.12 |
---|---|
백준] 1920 - 수 찾기 (0) | 2017.12.11 |
백준] 11055 - 가장 큰 증가 부분 수열 (0) | 2017.12.06 |
백준 알고리즘] 4948 - 베르트랑 공준(ACM-ICPC 2011) (0) | 2017.11.30 |
백준 알고리즘] 2399 - 거리의 차이 (0) | 2017.11.29 |