์ถ์ฒ: https://www.codeground.org/practice
์ด๋ฑํ๊ต๊ต ํ์์ธ ์ ์ฐ์ ์ํ์ด๋ ์ต๊ทผ ํ๊ต์์ ๋ ์ด์ง์์ XOR ์ฐ์ฐ์ ๋ํด ๋ฐฐ์ ๋ค. ๋์ ๋งค์ฐ ์ํนํ ํ์์ด๋ผ ์๋ก ๋ฐฐ์ด ์ฐ์ฐ์ ๊ฐ๊ณ ์ด๋ฆฌ์ ๋ฆฌ ์ฅ๋์น๊ธฐ ์์ํ๋ค. ๋ค๋ง ์ํ์ด๋ ์ ์ฐ์๊ฒ ์ผ์ ์ํค๋ ๊ฒ์ ์ข์ํ๋์ง๋ผ ๋ค์๊ณผ ๊ฐ์ ์ ์์ ํ๋ค.
โ๋ด๊ฐ N ๊ฐ์ 10์ง์๋ฅผ ์ฃผ๋ฉด, ๋ฑ์ฅํ๋ ์ซ์๋ค ์ค ํ์๋ฒ๋ง ๋ํ๋๋ ์ซ์๋ค์ ๋ชจ๋ XOR ํ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํด์ค.โ
์๋ฅผ ๋ค์ด '2, 5, 3, 3' ์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ, '2'์'5'๋ 1๋ฒ(ํ์ ๋ฒ) ๋ํ๋๊ณ '3' ์ 2๋ฒ (์ง์ ๋ฒ) ๋ํ๋๋ฏ๋ก ํ์ ๋ฒ ๋ํ๋ '2' ์ '5'๋ฅผ XOR ํ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํด์ผ ํ๊ณ , '2, 5, 3, 3, 2, 4, 5, 3' ์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ '2' ์ '5' ๋ 2๋ฒ ๋ํ๋๊ณ , '3' ์ 3๋ฒ, '4' ๋ 1๋ฒ ๋ํ๋๋ฏ๋ก ํ์ ๋ฒ ๋ํ๋ '3' ๊ณผ '4'๋ฅผ XOR ํ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํด์ผ ํ๋ค.
์ ์ฐ๋ ์ ์์ ์๋ฝํ์ง๋ง, ๊ฐ๋ฉด ๊ฐ์๋ก ๋งค๋ฒ XOR ์ฐ์ฐ์ ์ํํ๋ ์ผ์ ์ง์น๊ณ ์๋ค. ์ ์ฐ๋ฅผ ๋์์ ์ฃผ์ด ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
์ ๋ ฅ ํ์ผ์๋ ์ฌ๋ฌ ํ ์คํธ ์ผ์ด์ค๊ฐ ํฌํจ๋ ์ ์๋ค. ํ์ผ์ ์ฒซ์งธ ์ค์ ์ผ์ด์ค์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์์ฐ์ T ๊ฐ ์ฃผ์ด์ง๊ณ , ์ดํ ์ฐจ๋ก๋ก T ๊ฐ์ ํ ์คํธ ์ผ์ด์ค๊ฐ ์ฃผ์ด์ง๋ค. ( 1โคTโค20 ) ๊ฐ๊ฐ์ ํ ์คํธ ์ผ์ด์ค ์ฒซ ๋ฒ์งธ ์ค์๋ ์ํ์ด๊ฐ ๋งํ ์ซ์ N ( N ์ 3,000,000 ์ดํ์ ์์ฐ์)์ด ์ฃผ์ด์ง๋ค. ํ ์คํธ ์ผ์ด์ค์ ๋์งธ ์ค์๋ N๊ฐ์ ์ซ์๋ค์ด ๊ณต๋ฐฑ(๋น์นธ)์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ๊ฐ ์ซ์๋ 32bit ์ ์ํ ๋ณ์์ ๋ด์ ์ ์๋ ์์ด ์๋ ์ ์์ด๋ค.
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ต์ ์์๋๋ก ํ์ค์ถ๋ ฅ์ผ๋ก ์ถ๋ ฅํ์ฌ์ผ ํ๋ฉฐ, ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค ์ฒซ ์ค์๋ โCase #Tโ๋ฅผ ์ถ๋ ฅํ์ฌ์ผ ํ๋ค. ์ด๋ T๋ ์ผ์ด์ค์ ๋ฒํธ์ด๋ค. ๊ทธ ๋ค์ ์ค์๋ ์ฃผ์ด์ง ์ซ์๋ค ์ค์์ 'ํ์' ๋ฒ๋ง ๋ํ๋๋ ์ซ์๋ค์ ๋ชจ๋ XOR ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
| ์ ๋ ฅ | ์ถ๋ ฅ |
|---|---|
| 1 4 2 5 3 3 |
Case #1 7 |
์๋ฃ๊ตฌ์กฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ง ์์๋ ํ ์ ์๋ ๋ฌธ์ ๋ผ์, ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ค๋ฃฐ ์ ์์ผ๋ฉด ํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
์ด๋ฐ ๋ฌธ์ ์ ํต์ฌ์ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ฝ๊ณ ํจ์จ์ ์ธ ํํ์ ๋ฌธ์ ๋ก ๋ณํํ๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค๋ฉด "3์ N๋ฒ ๋ํ์์ค" ๋ผ๋ ๋ฌธ์ ๊ฐ ์ฃผ์ด์ก์ ๋, ๋จ์ํ 3์ N๋ฒ ๋ํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ์๋ ์์ง๋ง, 3๊ณผ N์ ๊ณฑํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ ํ๋ก๊ทธ๋จ์ด ํจ์ฌ ๋ ํจ์จ์ ์ด๊ณ , ์ฝ๋ฉํ๊ธฐ๋ ์ฝ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก, ์ด๋ฒ ๋ฌธ์ ๋ ์ ์๋ ๋ฌธ์ ๊ทธ๋๋ก ํ ์ ๋ฒ ๋์จ ์ซ์๋ค์ ๋ชจ์๋๊ณ , XOR ์ฐ์ฐ์ ํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง, ์ด๋ ๊ฒ ํ๋ฉด 1) ์ซ์๊ฐ ๋ช ๋ฒ ๋์ค๋์ง ์ธ๋ ํจ์, 2) ํ ์๋ฒ ๋์จ ์ซ์๋ค์ XOR ํ๋ ํจ์, ์ด๋ ๊ฒ ๋ ๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ํด์ผํ๋ค.
์๋ง ์ด๋ ๊ฒ ํ๋ฉด ํ๋ก๊ทธ๋จ์ด ๋ณต์กํด ์ง ๋ฟ๋ง ์๋๋ผ, ์ฐ์ฐ์๊ฐ๋ ์ค๋ ๊ฑธ๋ ค์ ์ ํ์๊ฐ ๋ด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ์ ์์ ์๋ ์๋ค.
XOR ์ฐ์ฐ์ ํน์ฑ์ ์ด์ฉํ๋ฉด, ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ํจ์ฌ ๋ ๊ฐ๋จํ๊ฒ ๋ฐ๊ฟ ์ ์๋ค.
XOR ์ฐ์ฐ์ ๋นํธ์ฐ์ฐ์์ด๊ณ , 1) ๊ฐ์ ๋นํธ(์ซ์)์ ์ฐ์ฐ์ ํ๋ฉด 0์ด ๋์ค๊ณ , 2) 0๊ณผ XOR ์ฐ์ฐ์ ํ๋ฉด ์๊ธฐ์์ ์ด ๋์จ๋ค๋ ํน์ฑ์ด ์๋ค. ๋ฐ๋ผ์ ์ฃผ์ด์ง ๋ชจ๋ ์ซ์๋ฅผ XOR ์ฐ์ฐํ๊ฒ ๋๋ฉด, ์ง์๋ฒ ๋์จ ์ซ์๋ 0์ด ๋์ด์ ์ต์ข ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น์ง ์๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก๋ ํ ์ ๋ฒ ๋์จ ์ซ์๋ผ๋ฆฌ๋ง XOR ์ฐ์ฐ์ ํ ๊ฒ๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ ๋ผ ์ ์๋ค.
๋ค์ ํ ๋ฒ ์ ๋ฆฌํ๋ฉด ํ ์ ๋ฒ ๋์จ ์ซ์๋ผ๋ฆฌ XOR ์ฐ์ฐ์ ํ๋ผ ๋ผ๋ ๋ฌธ์ ๋ ๋ชจ๋ ์ซ์๋ฅผ XOR ์ฐ์ฐ ํ๋ผ ๋ผ๋ ๋ฌธ์ ์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๋ ๊ฒ์ด๋ค.
์ ๋ ฅ๋ ๋ชจ๋ ์ซ์๋ฅผ XORํ๋ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ค.
// ์ฝ๋๊ทธ๋ผ์ด๋๋ก ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถํ๊ธฐ
// https://github.com/DaksHoont/CodeGround
#include <stdio.h>
int Answer;
int main(void)
{
int T, test_case;
setbuf(stdout, NULL);
scanf("%d", &T);
for(test_case = 0; test_case < T; test_case++)
{
int i,N,x;
Answer=0;
scanf("%d", &N);
for(i=0;i<N;i++)
{
scanf("%d",&x);
Answer^=x;
}
printf("Case #%d\n", test_case+1);
printf("%d\n", Answer);
}
return 0;
}// ์ฝ๋๊ทธ๋ผ์ด๋๋ก ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถํ๊ธฐ
// https://github.com/DaksHoont/CodeGround
#include <iostream>
using namespace std;
int res;
void solve()
{
int N,i,a;
cin>>N;
res=0;
for(i=0;i<N;i++)
{
cin>>a;
res^=a;
}
}
int main()
{
int TC,test_case;
cin>>TC;
for(test_case=1;test_case<=TC;test_case++)
{
solve();
cout<<"Case #"<<test_case<<endl
<<res<<endl;
}
return 0;
}# ์ฝ๋๊ทธ๋ผ์ด๋๋ก ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถํ๊ธฐ
# https://github.com/DaksHoont/CodeGround
import sys
inf = sys.stdin
T = inf.readline();
for t in range(0, int(T)):
Answer=0
N = int(inf.readline())
x_list = inf.readline().split()
for x in x_list:
Answer = Answer ^ int(x)
print('Case #%d' %(int(t)+1))
print(Answer)
inf.close()