간단하게 XOR에 대한 문제입니다. 0과 다른 숫자가 XOR를 한다면 0이 그 숫자로 바뀌게 될 것이고 나머지는 비트연산으로 인해 원하는 값이 출력되게 됩니다.
비트 연산자
AND | a & b | 둘 다 '참' 일 경우 1 을 반환한다. |
OR | a | b | 둘 중 하나라도 '참'인 경우 1을 반환한다. |
XOR | a ^ b | 둘 중 하나만 '참'인 경우 1을 반환한다. |
코드는 다음과 같습니다:
#include <iostream>
using namespace std;
int Answer;
int main(int argc, char** argv){
int T, test_case;
cin >> T;
for(test_case = 0; test_case < T; test_case++){
Answer = 0;
int N, temp ;
cin >> N ;
for(int i = 0 ; i < N ; i++){
cin >> temp ;
Answer ^= temp ;
}
cout << "Case #" << test_case+1 << endl;
cout << Answer << endl;
}
return 0;
}
해당 문제는 Github에서도 보실 수 있습니다:
https://github.com/gurcks8989/CodingTest/blob/master/Codeground/P1_Pick_a_Number.cpp
훈수 및 조언은 언제든 환영입니다.