본문 바로가기

교육/문제해결

[3일차][이진트리] 조짜기

- 문제 설명

조짜고 싶은사람을 쪽지에 적어 내서 그를 기반으로 조를 짬(조는 2명 기준)

- 입력

1 // 테스트 케이스

5 2 // 5명, 쪽지 2개

1 2 3 4 // 1번은 2번이랑, 3번은 4번이랑 조짜고 싶다.

- 출력

#1 3 // 테스트 케이스, 조 갯수

- 입력 예시

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

- 출력 예시

#1 3
#2 2
#3 3

- 코드 

#include "stdio.h"

int group[1002]; // 배열

int main(int argc, const char * argv[]) {

    int T;

    scanf("%d", &T);

    for(int tc = 1;tc <= T;tc++)

    {

        int numOfGroup=0; // 갯수 초기화

        int numOfPeople;

        int numOfPaper;

        scanf("%d %d",&numOfPeople, &numOfPaper);

        for(int i=0;i<1002;i++) // 배열 초기화

        {

            group[i] = i;

        }

        for(int i=1; i <= numOfPaper; i++) // 쪽지 갯수만큼

        {

            int n1,n2;

            scanf("%d %d",&n1,&n2);

            if(group[n1] == 0) // n1 칸이 비어있으면 넣어주고

                group[n1] = n2;

            else // 아니라면 반대 칸에 넣어주기

                group[n2] = n1;

        }

        for(int i=1;i<numOfPeople+1;i++) // 만큼 돌면서

        {

            if(group[i] == i) // 대표 번호 경우(조원 = 대표번호)

                numOfGroup++; // 갯수 증가

        }

        printf("#%d %d\n",tc,numOfGroup);

    }

    return 0;

}