0에서 9까지 숫자가 적힌 N장의 카드가 주어진다.
가장 많은 카드에 적힌 숫자와 카드가 몇 장인지 출력하는 프로그램을 만드시오.
카드 장수가 같을 때는 적힌 숫자가 큰 쪽을 출력한다.
[입력]
첫 줄에 테스트 케이스 개수 T가 주어진다. ( 1 ≤ T ≤ 50 )
다음 줄부터 테스트케이스의 첫 줄에 카드 장수 N이 주어진다. ( 5 ≤ N ≤ 100 )
다음 줄에 N개의 숫자 ai가 여백없이 주어진다. (0으로 시작할 수도 있다.) ( 0 ≤ ai ≤ 9 )
[출력]
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 가장 많은 카드의 숫자와 장 수를 차례로 출력한다.]
0에서 9까지 숫자가 적힌 N장의 카드가 주어진다.
1. SOLUTION
0부터 9까지의 숫자 카드 개수를 세어주기 위해 counts라는 배열을 하나 생성하고,
입력받은 숫자카드를 모두 확인해보며 counts배열에 해당하는 idx 원소를 +1 해 준다.
그리고 counts 배열을 돌면서 가장 많은 카드갯수와 해당 인덱스를 받아와 출력해주면 간단히 풀 수 있다.
+) max 내장함수 사용해도 풀 수 있음!
2. CODE
T = int(input())
for tc in range(1, T+1):
N = int(input())
lst = list(map(int, input()))
counts = [0] * 10 # 0~9까지 숫자 개수 세어줄 배열
for i in lst: # lst의 원소를 돌아보면서
counts[i] += 1 # 숫자 세주기!
max_card, max_num = 0, 0 # 가장 많은 카드 갯수, 카드에 적힌 숫자
for i in range(10):
if max_card <= counts[i]:
max_card = counts[i]
max_num = i
print(f'#{tc} {max_num} {max_card}')
댓글