코딩테스트/SWExpertAcademy

숫자카드 Python(SW Expert Academy)

멍토 2020. 2. 24.

난이도 : D2

문제번호 : 4834

※ 저의 풀이가 무조건적인 정답은 아닙니다.

다른 코드가 좀더 효율적이고 좋을 수 있습니다.

다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.

문제 주소 및 출처입니다.

https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVFCzaqeUDFAWg#

 

SW Expert Academy

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

swexpertacademy.com


목차

1. 문제 설명

2. 문제 해석

3. 소스 코드


1. 문제 설명

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

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

입력

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

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

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

출력

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

예시

입력 출력
3
5
49679
5
08271
10
7797946543
#1 9 2
#2 8 1
#3 7 3

2. 문제풀이


파이썬 Intermediate 1일차 문제입니다.

이번도 카운팅 문제인데요.

기초적인 문제들이라 자주나오는것 같습니다.

카운팅문제는 각 번호의 개수를 저장할 리스트를 만든후에

나온 카드의 번호에 해당하는 인덱스에 접근하여 갯수를 하나씩 늘린뒤에

뒤부터 검사하여 제일 많이나온 카드를 확인하면 됩니다.

같은 장수라면 패쓰하는 형식으로 하여 제일 큰 값인 카드를 출력합니다.

 


3. 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#D2 4834 숫자카드
length = int(input())
for l in range(1, length+1):
    size = input()
    temp = list(map(int, list(input())))
    #각 자리수를 카운팅하기 위해 사용
    numcheck = [0]*10
    #각 자리수 카운팅하기
    for t in temp:  numcheck[t] += 1
    #숫자와 횟수를 적기위한 변수
    index = maxnum = 0
    #반복문을 돌면서 찾는다
    for i in range(9-1-1):
        if numcheck[i] > maxnum :
            maxnum = numcheck[i]
            index = i
    #출력
    print("#{} {} {}".format(l, index, maxnum))

 

댓글

💲 광고입니다.