문제
1~10 범위의 두 수가 공백 없이 이어 붙여진 형태로 입력될 때, 두 수의 합을 구하라.
입력
두 수가 공백 없이 이어 붙여진 정수가 주어진다.
출력
두 수의 합을 출력한다.
예제
| 입력 | 출력 |
|---|---|
37 | 10 |
1010 | 20 |
풀이
입력값의 자릿수를 분석하여 두 수를 분리한다.
1010이면 10+10=20을 출력한다- 끝 두 자리가
10이면 앞부분과 10의 합을 출력한다 - 앞 두 자리가
10이면 10과 뒷부분의 합을 출력한다 - 그 외에는 일의 자리와 십의 자리를 분리하여 더한다
핵심 아이디어: 두 수 모두 1~10이므로 경우의 수가 제한적이며, 10이 포함된 경우를 먼저 처리한다.
코드
#include <iostream>
using namespace std;
int main()
{
int a;
int b = 0;
cin >> a;
if (a == 1010)
{ // 1010
cout << 20;
}
else if (a % 10 == 0)
{ // a10
a /= 100;
cout << 10 + a;
}
else
{
b += a % 10;
a /= 10;
if (a == 10)
{ // 10b
cout << 10 + b;
}
else
{ // ab
cout << a + b;
}
}
return 0;
}복잡도
- 시간: O(1)
- 공간: O(1)