본문 바로가기

교육/문제해결

[1일차] 가장 많은 숫자카드 찾기

-문제 설명

0~9까지 숫자가 적힌 n장의 카드가 주어짐. 가장 많게 적힌 숫자와 장수를 출력

장수가 같을 때는 숫자가 큰쪽 출력

5 <= N <= 100

- 입력

1 // 테스트케이스 갯수

5 49679 // N과 한칸의 공백, 카드 숫자

- 출력

#1 9 2 // 테스트케이스, 카드 숫자, 카드 수

- 입력 예시

3
5 49679
5 08271
10 7797946543

- 출력 예시

#1 9 2
#2 8 1
#3 7 3

- 코드

int arr[1000];

int countArr[1000];

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

    int T;

    scanf("%d", &T);

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

    {

        int N; // 입력받은 숫자들

        scanf("%d",&N);

        for(int i = 0; i < N; i++) // 입력받은 숫자들을 1자리씩 띄어서 배열에 저장

        {

            scanf("%1d", &arr[i]);

        }

        for(int i = 0;i<N;i++) // 카운팅

        {

            int count = 0;

            for(int j = 0;j<N;j++)

            {

                if(arr[i] == arr[j])

                    count++;

            }

            countArr[i] = count;

        }

        int maxValue = countArr[0];

        int maxIndex = 0;

        for(int i =0;i<N;i++) // 가장 많은 카운트 구하기

        {

            if (countArr[i] > maxValue) {

                maxValue = countArr[i];

                maxIndex = i;

            }

            else if(countArr[i] == maxValue && arr[i] > arr[maxIndex]) // 숫자가 같으면 둘 중 큰 수

                maxIndex = i;

        }

        printf("#%d %d %d\n",tc,arr[maxIndex],countArr[maxIndex]);

    }

    return 0;

}