본문 바로가기
Programming/Algorithm

숫자 골라내기

by OKOK 2018. 1. 23.

#include <cstdio>

#include <iostream>

using namespace std;


int main(int argc, char** argv) {


setbuf(stdout, NULL);


int TC;

int test_case;


scanf("%d", &TC); // cin 사용 가능

for (test_case = 1; test_case <= TC; test_case++) {

// 이 부분에서 알고리즘 프로그램을 작성하십시오.

int N, ret = 0;

cin >> N;

for (int i = 0; i<N; ++i) {

int num;

cin >> num;

ret ^= num;

}

// 이 부분에서 정답을 출력하십시오.

printf("Case #%d\n", test_case); // cout 사용 가능

cout << ret << endl;


}


system("pause");

return 0; // 정상종료 시 반드시 0을 리턴해야 합니다.

}


2 3 5 5 를 넣는다고 가정을 해보고 풀어보도록 하겠습니다. 엔과 리절트 변수를 선언합니다. 그리고 4를 받습니다. 그리고 0 ,1, 2, 3 총 4번을 돌립니다. 그리고 넘버를 받습니다. 그리고 2 3 5 5 를 받는 즉즉 이것을 xor 을 합니다. 헐 xor 같은 숫자를 하면 없어지는 것을 이용한 것이네요. 예를 들어 5 5 의 경우에는 0101 0101 이니까 이것을 ^ 연산을 하게 되면 0 0 0 0 이 됩니다. 없는 것과 마찬가지입니다. 이거 xor 연산에 대해서 알고 있는지를 물어본 것입니다.