SWEA

SWEA 4834번 - 숫자 카드 문제 풀이 [python]

SS_G 2023. 2. 6. 20:39
반응형

난이도 - D2

https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

[문제]

0에서 9까지 숫자가 적힌 N장의 카드가 주어진다.

가장 많은 카드에 적힌 숫자와 카드가 몇 장인지 출력하는 프로그램을 만드시오. 카드 장수가 같을 때는 적힌 숫자가 큰 쪽을 출력한다.

 

[입력]

첫 줄에 테스트 케이스 개수 T가 주어진다.  ( 1 ≤ T ≤ 50 )

다음 줄부터 테스트케이스의 첫 줄에 카드 장수 N이 주어진다. ( 5 ≤ N ≤ 100 )

다음 줄에 N개의 숫자 ai가 여백없이 주어진다. (0으로 시작할 수도 있다.)  ( 0 ≤ ai ≤ 9 ) 

 

[출력]

각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 가장 많은 카드의 숫자와 장 수를 차례로 출력한다.

 

 

[코드]

T = int(input())

for i in range(1, T+1):
    card = int(input())
    a = list(map(int, input()))

    cnt = [0] * 10
    for j in range(card):
        cnt[a[j]] += 1

    result = 0
    for k in range(len(cnt)):
        if result <= cnt[k]:
            result = cnt[k]
            idx = k


    print("#%d %d %d" % (i, idx, result))

[풀이]

1. 숫자가 몇번 나왔는지 개수 체크하는 cnt 리스트 변수 하나 만들기

2. 카드 개수 만큼 반복하여 뽑은 숫자 리스트 a[j]를 cnt 리스트에 +1 로 누적시킴

3. cnt 전체 개수와 result와 비교하여 cnt가 같거나 크면 reslut = cnt[k] 를 반복 후 최종적으로 어떤 숫자가 가장 많이 나왔는지 idx = k를 담아주고 출력

반응형

'SWEA' 카테고리의 다른 글

SWEA 4828번 - min max 문제 풀이 [python]  (0) 2023.02.01