작성일 :

문제 링크

25786번 - Decimal XOR

설명

두 수를 자릿수별로 비교해 DEXOR 결과를 만드는 문제입니다.


접근법

두 숫자를 문자열로 받아 앞에 0을 채워 길이를 맞춥니다.

각 자리에서 두 숫자가 모두 2 이하이거나 모두 7 이상이면 0, 그렇지 않으면 9를 출력합니다.


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
using System;
using System.Text;

class Program {
  static void Main() {
    var a = Console.ReadLine()!.Trim();
    var b = Console.ReadLine()!.Trim();

    var n = Math.Max(a.Length, b.Length);
    a = a.PadLeft(n, '0');
    b = b.PadLeft(n, '0');

    var sb = new StringBuilder();
    for (var i = 0; i < n; i++) {
      var da = a[i] - '0';
      var db = b[i] - '0';
      var bothLow = da <= 2 && db <= 2;
      var bothHigh = da >= 7 && db >= 7;
      sb.Append(bothLow || bothHigh ? '0' : '9');
    }

    Console.WriteLine(sb.ToString());
  }
}

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
#include <bits/stdc++.h>
using namespace std;

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

  string a, b; cin >> a >> b;
  int n = max(a.size(), b.size());
  if ((int)a.size() < n) a = string(n - a.size(), '0') + a;
  if ((int)b.size() < n) b = string(n - b.size(), '0') + b;

  string res;
  res.reserve(n);
  for (int i = 0; i < n; i++) {
    int da = a[i] - '0';
    int db = b[i] - '0';
    bool bothLow = da <= 2 && db <= 2;
    bool bothHigh = da >= 7 && db >= 7;
    res.push_back((bothLow || bothHigh) ? '0' : '9');
  }

  cout << res << "\n";

  return 0;
}