※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 25786번 문제인 Decimal XOR이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/25786 

 

25786번: Decimal XOR

There are two input lines, each line providing a decimal number between 0 and 999,999 (inclusive). Assume that there will not be extra leading zeroes in an input number, i.e., there will not be extra zeroes at the beginning of a number in the input.

www.acmicpc.net

두 십진수에 대하여, 대응되는 자릿수가 1) 둘 다 2 이하이거나 2) 둘 다 7 이상인 경우 0, 그렇지 않은 경우 1을 새로운 자릿수로 하는 DEXOR연산을 구현하는 문제이다.

 

두 수를 문자열로 읽어 더 짧은 문자열의 앞쪽에 leading zeros를 padding하고 비교하거나, 두 수가 0이 될 때가지 1의 자리를 비교 후 10으로 나누는 것을 반복해 얻은 각 자리를 역순으로 출력해 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <stack>
using namespace std;

stack<int> stk;

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

	int X, Y; cin >> X >> Y;
	if (X == 0 && Y == 0) cout << 0;
	else {
		while (X || Y) {
			int x = X % 10, y = Y % 10;
			if ((x <= 2 && y <= 2) || (x >= 7 && y >= 7)) stk.push(0);
			else stk.push(9);

			X /= 10, Y /= 10;
		}

		while (!stk.empty()) {
			cout << stk.top();
			stk.pop();
		}
	}
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 25850 // C++] A Game Called Mind  (0) 2022.11.10
[BOJ 24348 // C++] ИЗРАЗ  (0) 2022.11.09
[BOJ 25703 // C++] 포인터 공부  (0) 2022.11.09
[BOJ 25915 // C++] 연세여 사랑한다  (0) 2022.11.08
[BOJ 25935 // C++] Lemonade Stand  (0) 2022.11.08

+ Recent posts