© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 15873 - 공백 없는 A+B

2024-11-10
BOJ
브론즈 IV
cpp
원본 문제 보기
수학
사칙연산

문제

BOJ 15873 - 공백 없는 A+B

1~10 범위의 두 수가 공백 없이 이어 붙여진 형태로 입력될 때, 두 수의 합을 구하라.

입력

두 수가 공백 없이 이어 붙여진 정수가 주어진다.

출력

두 수의 합을 출력한다.

예제

입력출력
3710
101020

풀이

입력값의 자릿수를 분석하여 두 수를 분리한다.

  1. 1010이면 10+10=20을 출력한다
  2. 끝 두 자리가 10이면 앞부분과 10의 합을 출력한다
  3. 앞 두 자리가 10이면 10과 뒷부분의 합을 출력한다
  4. 그 외에는 일의 자리와 십의 자리를 분리하여 더한다

핵심 아이디어: 두 수 모두 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)