상세 컨텐츠

본문 제목

2386. [AtCoder Beginner Contest 073] C. Write and Erase

PROGRAMMING/Algorithm

by koharin 2019. 6. 29. 18:33

본문

728x90
반응형

You are playing the following game with Joisino.

1. Initially, you have a blank sheet of paper.

2. Joisino announces a number. If that number is written on the sheet, erase the number from the sheet; if not, write the number on the sheet. This process is repeated N times.

3. Then, you are asked a question: How many numbers are written on the sheet now?

The numbers announced by Joisino are given as A1 , ... , AN in the order she announces them.

How many numbers will be written on the sheet at the end of the game?

Constraints

1. 1 ≤ N ≤ 100000

2. 1 ≤ Ai ≤ 1000000000(=109)

3. 
All input values are integers.


Input

The first line of the input contains an integer T, the number of test sets (1 ≤ T ≤ 10).

For each test set, the input is given from Standard Input in the following format:

Output

For each test case, print “#T”(test case number), and 
how many numbers will be written on the sheet at the end of the game.

 

일단 게임 룰을 이해해보자.

빈 종이 준비

1. Joisino가 숫자를 부른다. 그 숫자가 종이에 적혀 있으면 지우고, 종이에 안 적혀있으면 써라.

2. 1의 과정이 N번 반복된다.

3. N번 반복 후 질문을 받는다. 

   "종이에 숫자가 몇 개 적혀있는가?"

 

음...일단 적힌 숫자 전체 개수에서 해당 숫자를 말하면(in) -1하고 없으면(not in) +1하는 식으로 접근하면 될 것 같다.

숫자가 같은지의 여부는 종이에 적힌 숫자 배열을 탐색하면 될 것 같고...

 

입력

line 1: test case 개수 T

line 2: 반복 횟수 N (Joisino이 말하는 숫자 개수로 이해했다.)

line 3: Joisino이 말하는 숫자를 쓴다. N개

 

입력 예시

3

6

2

6

N = 3 3개의 숫자 말한다.

6,2,6 차례로 Joisino이 말한 숫자.

6, 2를 적고, 6을 말할 때 종이에 적혀있으므로 6이 지워진다.

결과적으로 2만 종이에 적혀있어서 종이에 적힌 숫자 개수는 1개

 

 

 

생각보다 간단했다.

test case에서 k를 입력받을 때마다 c 배열에 있는지 확인하고 있으면 remove하고 없으면 append한다.

그리고 해당 test case에 대한 것이 끝나면 len(c)로 개수를 구해서 b 배열에 저장한다.

위의 두 코드를 합하면 된다.

 

 

 

자 이제 제출해보자.

 

 

 

 

Pass

728x90
반응형

관련글 더보기