페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#4620

재고정리 5s 256MB

문제

창고에 재고로 쌓여 있는 상품들을 재포장하려고 한다.

재포장을 완료하기 위해 추가로 구매해야 하는 상품이 몇 개인지 구하고자 한다.

 

창고에는 상품이 2개씩 들어있는 상자가 쌓여있다. 한 상자 안에 들어있는

2개의 상품이 같은 종류인 경우도 있고 아닌 경우도 있다.

1+1 행사를 위해 모든 상자 안에 같은 종류의 상품을 2개씩 넣고 포장하려고 한다.

일단, 상품의 짝이 맞지 않는 상자끼리 서로 필요한 물건을 교환해서 최대한

많은 짝을 맞춰 재포장한다. 그렇게 했음에도 짝을 맞추기에 수량이 부족한 상품은

추가 구매한다. 단, 상자는 원래 창고에 쌓여있던 개수만큼 사용할 수 있으며, 

추가로 더 가져오거나 구입하지 못한다.

 

아래 예시는 재포장을 진행하기 전, 각 상자에 들어있는 상품들의 종류를 나타낸다.

 

상자번호   상품종류

1번 상자    1, 2

2번 상자    2, 1

3번 상자    3, 3

4번 상자    4, 5

5번 상자    5, 6

6번 상자    7, 8

 

1번 상자에서는 2번 상품을, 2번 상자에서는 1번 상품을 서로 교환하면 두 상자의 짝 맞추기가 해결된다.

3번 상자는 이미 짝이 맞추어져 있기 때문에 다른 상자와 교환할 필요가 없다.

4번 상자는 4번 상품을 5번 상자에 들어있는 5번 상품과 교환하면 짝을 맞출 수 있다. 

5번과 6번 상자는 남아 있는 상품들로 짝을 맞출 수 없기 때문에 상품의 구매가 필요하다.

이때, 2개의 상품만 구매하며 짝을 맞출 수 있다.

예를 들어, 4번과 6번 상품을 구매하면 각각 만들 수 있다.

이 경우 6개의 상자를 모두 채웠으므로 7, 8번 상품은 사용되지 않는다.

 

각 상자에 들어있는 상품의 종류를 나타내는 2차원 배열 boxes가 매개변수로 주어진다.

상품의 짝을 맞춰 재포장을 완료하기 위해 추가로 구매해야 하는 상품의 최소 개수를 

구하는 프로그램을 작성하시오.

 


입력

첫 행에 상자의 개수 N이 주어진다. (1 <= N <= 100,000)

다음 행부터 N개의 행에 걸쳐 각 상자에 들어있는 상품 번호 2개

ai와 bi가 공백으로 구분되어 주어진다. (1 <= ai, bi <= 1,000,000)

 

* 전체 입력에서 ai 또는 bi가 3개 이상 입력되는 경우는 주어지지 않는다.


출력

짝을 맞추어 재포장하기 위해 추가로 구매해야 하는 

상품의 최소개수를 구하여 하나의 행에 출력한다.​ 


예제 #1

6

1 2
2 1
3 3
4 5
5 6
7 8
2

예제 #2

3

1 2
3 4
5 6
3

예제 #3

3

1 2
2 3
3 1
0


출처

LINE2020_2 1번 | dnfka0930
로그인해야 코드를 작성할 수 있어요.