[백준] 10757. 큰수 A+B

Algorithm|2021. 11. 23. 12:02
반응형
 

10757번: 큰 수 A+B

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

long long int로 풀어 보려 했는데, 10^10000이 long long int 마저 초과해버림

그래서 string으로 풂

 

IDEA
'0' == 48 
a, b 둘 중 작은 글자 수만큼 반복 

Ex :  a = 99, b = 1123면 

3 + 9 -> 12 
2를 넣고 
1을 올림 

2 + 9 + 1 = 12 
2를 넣고 
1을 올림 

1 올린 거와 '1123'의 1을 더해 
2를 넣음 

0 올린 거와 '1123'의 1을 더해 
1을 넣음
int main() 
{
  string a , b; 
  string tmp;
  string ans;

  int up = 0; //올림 수
  int one;
  int sum;
  cin >> a >> b;


  //a는 짧은 거로 b는 긴 거로
  if(a.size() > b.size())
  {
    tmp = a;
    a = b;
    b = tmp;
  }
  //a, b 길이 
  int a_s = a.size();
  int b_s = b.size();

  for(int i=0; i<b.size(); i++)
  {
    if(i < a_s) //a 길이만큼은 a와 b의 자리수를 합
      sum = a[a_s-1-i] - 48 + b[b_s-1-i] - 48 + up;
  
    else //이후부터는 b의 자리수만 
      sum = b[b_s-1-i] - 48 + up;
      
    one = sum % 10;
    up = sum / 10;
    ans.insert(0,to_string(one)); //a b 합의 일의 자리수를 앞에 추가
  }

  if(up == 1) //마지막에 올림 수 가 있을 경우 앞에 추가
    ans.insert(0,to_string(up));

  cout << ans;
 
  return 0;
}
반응형

댓글()