작성일 :

문제 링크

6565번 - Hard to Believe, but True!

설명

식의 각 숫자를 거꾸로 읽었을 때 덧셈이 성립하는지 판단하는 문제입니다.


접근법

먼저 입력 줄을 세 숫자로 분리합니다.

다음으로 각 숫자 문자열을 뒤집어 정수로 바꿔 더한 뒤 비교합니다.

마지막으로 결과에 따라 True 또는 False를 출력합니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;

class Program {
  static int Rev(string s) {
    var arr = s.ToCharArray();
    Array.Reverse(arr);
    return int.Parse(new string(arr));
  }

  static void Main() {
    while (true) {
      var line = Console.ReadLine();
      if (line == null) break;

      var plus = line.IndexOf('+');
      var eq = line.IndexOf('=');

      var a = line.Substring(0, plus);
      var b = line.Substring(plus + 1, eq - plus - 1);
      var c = line.Substring(eq + 1);

      var ra = Rev(a);
      var rb = Rev(b);
      var rc = Rev(c);

      if (ra + rb == rc) Console.WriteLine("True");
      else Console.WriteLine("False");

      if (line == "0+0=0") break;
    }
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <bits/stdc++.h>
using namespace std;

int revStr(const string &s) {
  string t = s;
  reverse(t.begin(), t.end());
  return stoi(t);
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  string line;
  while (cin >> line) {
    int plus = line.find('+');
    int eq = line.find('=');

    string a = line.substr(0, plus);
    string b = line.substr(plus + 1, eq - plus - 1);
    string c = line.substr(eq + 1);

    int ra = revStr(a);
    int rb = revStr(b);
    int rc = revStr(c);

    if (ra + rb == rc) cout << "True\n";
    else cout << "False\n";

    if (line == "0+0=0") break;
  }

  return 0;
}