# 3. APS/SWEA

SWEA # Python_D2_4834_숫자 카드 ✅

둥굴둥굴둥굴레차 2021. 2. 17. 22:33

 

 

👜 [문제]

 

0에서 9까지 숫자가 적힌 N장의 카드가 주어진다.
가장 많은 카드에 적힌 숫자와 카드가 몇 장인지 출력하는 프로그램을 만드시오.

카드 장수가 같을 때는 적힌 숫자가 큰 쪽을 출력한다.

 

 

SW Expert Academy

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

swexpertacademy.com

[input]
3
5
49679
5
08271
10
7797946543

[output]
#1 9 2
#2 8 1
#3 7 3
import sys
sys.stdin = open("input.txt")

T = int(input())


for tc in range(1, T+1):
    N = int(input())
    nums=input() 

    cnt_list = [0 for _ in range(10)]
    for i in nums:
        cnt_list[int(i)]+=1

    max_idx=0
    max_num=0
    for j in range(len(cnt_list)):
    	# cnt_list의 인덱스를 전부 돌면서 max_sum엔 가장 큰 값을 넣어 준다.
        # 같다는 조건도 넣어 주었으니 만약 2가 2장 7이 2장 즉, 중복된 카드가 각 2장으로 같다 하더라도
        # 2의 인덱스를 지나 7의 인덱스를 돌며 7의 값을 가져오므로
        # 적힌 숫자가 큰 쪽을 들고온다는 조건이 성립된다.
        if cnt_list[j] >=max_num:
            max_num = cnt_list[j]
            max_idx=j

    print("#{} {} {}".format(tc, max_idx, max_num))

 


 

🍦 [복습]

 

# 1. 210218

 

다음과 같이 해당 인덱스를 받아오려면 max_idx 변수를 if문 안에 함께 넣어주자!

이 부분 자꾸 잊어버리고 헷갈린다  ╯︿╰

    max_idx =0

    for i in range(10) :
        if cnt_arr[i] >= max_val :
            max_val = cnt_arr[i]
            max_idx = i

 

 

# 2. 210221

 

느낀점

가장 많은 장수의 카드의 넘버를 받아오는 것을 자주 어려워 한다.

len()을 사용하면 해당 카드 넘버를 받아올 수 있다는 점 잊지말자!