문제 정보
백준 ( BOJ ) 17285번 XORChic
문제 풀이 : 마스킹
문제 출처 : 경찰대학 > 2019 ChickenReallyGood 대회 C번
문제 링크 : https://www.acmicpc.net/problem/17285
문제 풀이
뭔가 이번 대회 이름인 ChickenReallyGood 과 굉장히 어울리는 문제이네요 ㅎㅎ…
이번 문제는 XOR 이 어떻게 작용하냐? 만 안다면 간단한 문제입니다.
(물론 XOR 을 표현 할 줄도 알아야 하겠지만요)
A XOR B = C
가 있습니다.
이 문제에서는 A와 C를 주어주고 B를 구해야 합니다.
가만히 보면, 구하기 힘들어 보입니다.
저것 관련 규칙을 모른다면?
직접 해봐서 규칙을 찾으면 됩니다.
A : 01011
B : 01100
C : 00111
예시를 하나 들어서 생각해 보면 편합니다.
A XOR B = C 인 상황입니다.
A와 C를 어떻게 연산해야 B가 나올까요?
답은 A XOR C 입니다.
즉 첫자리만 받아서 첫자리 XOR ‘C’ 를 하면 키값이 나오게 되죠.
string 값에서 각 자리를 불러오는 것은 string.at(자릿수) 로
간단하게 불러 올 수 있습니다.
그러면 키값을 불러왔으면 이제 정말 간단하겠죠?
받은 입력의 각 자리마다 XOR 연산을 해서 출력만 해주면 끝나게 됩니다.
코드
#include <iostream>
#include <string>
using namespace std;
int main() {
string a;
int i = 0;
char temp;
cin >> a; ;
i = a.at(0)^'C';
for (int j = 0; j < a.size(); j++) {
temp = a.at(j) ^ i;
cout << temp;
}
return 0;
}