728x90
반응형
SW Expert Academy에서 학습용으로 문제를 가져왔습니다. 문제가 될 시 수정, 삭제하겠습니다.
https://swexpertacademy.com/main/main.do
문제 : 0에서 9까지 숫자가 적힌 N장의 카드가 주어진다.
가장 많은 카드에 적힌 숫자와 카드가 몇 장인지 출력하는 프로그램을 만드시오. 카드 장수가 같을 때는 적힌 숫자가 큰 쪽을 출력한다.
[입력]
첫 줄에 테스트 케이스 개수 T가 주어진다. ( 1 ≤ T ≤ 50 )
다음 줄부터 테스트케이스의 첫 줄에 카드 장수 N이 주어진다. ( 5 ≤ N ≤ 100 )
다음 줄에 N개의 숫자 ai가 여백없이 주어진다. (0으로 시작할 수도 있다.) ( 0 ≤ ai ≤ 9 )
[출력]
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 가장 많은 카드의 숫자와 장 수를 차례로 출력한다.
input
3
5
49679
5
08271
10
7797946543
output
#1 9 2
#2 8 1
#3 7 3
code
Test_case=int(input())
for i in range(1,Test_case+1):
Card_N=int(input())
Card_numbers=str(input()) #따로 따로 분리하기 위해 숫자를 문자열로 입력받는다.
dictionary = {}
for k in Card_numbers:
if k not in dictionary:
dictionary[k]=1
else:
dictionary[k]=dictionary[k]+1
def function(x):
return dictionary[x]
key_max=max(dictionary.keys(),key=function)
if key_max=="0":
a=list(dictionary.keys())
a_new_list=[]
for j in a:
a_new_list.append(int(j))
print("#%d %s %s" %(i,max(a_new_list),dictionary[key_max]))
else:
print("#%d %s %s" %(i,key_max,dictionary[key_max]))
먼저 카드들의 숫자들을 문자화 시켜서 딕셔너리에 각 카드 숫자들의 개수들을 카운팅했습니다.
그 후에 딕셔너리의 최대값인 key_max변수를 생성해주고 카드 장수가 같은 경우인 key_max가 "0"인 경우를 만들어 주어 숫자가 큰 쪽을 출력하게 해주었고 카드 장수가 다르면 가장 많이 나온 카드의 숫자와 그 숫자의 장수를 출력해주는 코드를 짰습니다.
코드는 길지만 비교적 간단하게 문제를 해결할 수 있었습니다.
반응형
'Programming > SWEA' 카테고리의 다른 글
[SWEA 4836].[파이썬 S/W 문제해결 기본] 2일차 - 색칠하기 (0) | 2021.08.01 |
---|---|
[SWEA 4835].[파이썬 S/W 문제해결 기본] 1일차 - 구간합 (1) | 2021.07.31 |
[SWEA 4831].[파이썬 S/W 문제해결 기본] 1일차 - 전기버스 (0) | 2021.07.30 |
[SWEA 4828].[파이썬 S/W 문제해결 기본] 1일차 - min max (0) | 2021.07.30 |
[SWEA 6229].[파이썬 프로그래밍 기초(2) 파이썬의 기본 응용] 5. 객체지향 7 (0) | 2021.07.29 |