0부터 9사이의 값이 적혀있는 카드가 N장 있다. 중복횟수가 가장 많은 카드의 숫자와 개수를 구하여라
중복횟수가 가장 많은 카드의 개수가 같다면, 숫자가 큰 값을 구한다.
첫 줄에 테스트케이스의 개수가 주어지며 그 다음 줄에 카드의 총 개수가 주어진다. 그 다음줄에는 카드의 숫자가 주어진다.
3
5
49679
5
08271
10
7797946543
중복횟수가 가장 많은 카드의 개수와 숫자를 출력한다.
#1 9 2
#2 8 1
#3 7 3
counting sort를 사용한다.
1. 0으로 초기화된 counts 배열을 만든다.
2. i = 0 -> arr.length arr[i]의 값을 인덱스로 갖는 counts의 원소에 1을 더한다.
3. counts가 가장 큰 값을 뽑아낸다.
4. counts가 가장 큰 값이 두개 이상이면 index가 높은 값의 index와 value를 출력한다.
T = int(input())
for tc in range(1, T+1):
N = int(input())
arr = list(map(int, input()))
maxValue = 0
maxIndex = 0
counts = [0] * 10
for i in range(N):
counts[arr[i]] += 1
for i, v in enumerate(counts):
if maxValue > v:
continue
maxValue = v
maxIndex = i
print(f"#{tc} {maxIndex} {maxValue}")