반응형
난이도 - 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 |
---|