• Home
  • About
    • 코드좀비 photo

      코드좀비

      An amazing website.

    • Learn More
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

[BOJ] 백준 17285 XORChic C++

01 Jul 2019

Reading time ~1 minute

문제 정보

백준 ( 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;
}


백준C++마스크 Share Tweet +1