본문 바로가기
카테고리 없음

SWEA - 4834. 숫자카드 파이썬

by 윤뇽뇽

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}')

 

 

댓글