인풋텍스트를 리스트로 받고 순회하면서
그 값과 리스트안에 같은 값의 수를 튜플로 반환하여 새로운 리스트에 담았다.
그리고 갯수가 가장 많은 것 중에 가장 큰수를 찾아 출력하였다.
import sys
sys.stdin = open('input.txt')
#lst안의 값의 갯수를 세서 값과 갯수를 튜플로 리턴하는 함수
def cntnum(a, lst):
cnt = 0
for tmp in lst:
if a == tmp:
cnt += 1
return a, cnt,
## 카드갯수를 나타내는 cards 변수와 그 숫자를 num
#우선 리스트 첫인덱스의 값으로 초기화
def maxcard(newlst):
cards = newlst[0][1]
num = newlst[0][0]
#리스트를 돌리면서
for tup in newlst:
#cards개수가 크거나 같을때, 값이 같은데 숫자가 더 클 수 도있으니
if tup[1] >= cards:
#일때 숫자가 더 크다면
# 그 값으로 cards와 num에 할당
if tup[0]> num:
cards = tup[1]
num = tup[0]
return num, cards
testNum = int(input())
#띄어쓰기가 없는 입력값이라 split() 없이 받음
for test in range(1, testNum+1):
num = int(input())
lst = list(map(int, input()))
newlst =[cntnum(a,lst) for a in lst]
#print(newlst) newlst에는 값이 이런식으로 담긴다.
#[(4, 1), (9, 2), (6, 1), (7, 1), (9, 2)]
#[(0, 1), (8, 1), (2, 1), (7, 1), (1, 1)]
#[(7, 3), (7, 3), (9, 2), (7, 3), (9, 2), (4, 2), (6, 1), (5, 1), (4, 2), (3, 1)]
print(f'#{test} {maxcard(newlst)[0]} {maxcard(newlst)[1]}')
'알고리즘 > SWEA' 카테고리의 다른 글
[swea][파이썬] 13627 .전기버스 (0) | 2022.08.22 |
---|---|
[swea][파이썬] 13626 .구간합 (0) | 2022.08.22 |
[swea][파이썬] 13623 .min max (0) | 2022.08.22 |
[swea][파이썬] 1208. [S/W 문제해결 기본] 1일차 - Flatten (0) | 2022.08.22 |
[swea][파이썬] 1206 .[S/W 문제해결 기본] 1일차 - View (0) | 2022.08.22 |