Skip to content

Latest commit

ย 

History

History
161 lines (109 loc) ยท 5.34 KB

File metadata and controls

161 lines (109 loc) ยท 5.34 KB

์—ฐ์Šต๋ฌธ์ œ #1 ์ˆซ์ž ๊ณจ๋ผ๋‚ด๊ธฐ

์ถœ์ฒ˜: 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ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•œ๋‹ค.

C

// ์ฝ”๋“œ๊ทธ๋ผ์šด๋“œ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜๊ธฐ
// 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;
}

C++

// ์ฝ”๋“œ๊ทธ๋ผ์šด๋“œ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜๊ธฐ
// 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;
}

Python

# ์ฝ”๋“œ๊ทธ๋ผ์šด๋“œ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜๊ธฐ
# 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()