[SWEA] 4834 숫자카드
문제 출처 : [SWEA] 4834 숫자카드
learn -> course -> programming intermediate -> list1 -> 숫자카드
문제
0에서 9까지 숫자가 적힌 N장의 카드가 주어진다.
가장 많은 카드에 적힌 숫자와 카드가 몇 장인지 출력하는 프로그램을 만드시오. 카드 장수가 같을 때는 적힌 숫자가 큰 쪽을 출력한다.
입력
첫 줄에 테스트 케이스 개수 T가 주어진다. ( 1 ≤ T ≤ 50 )
다음 줄부터 테스트케이스의 첫 줄에 카드 장수 N이 주어진다. ( 5 ≤ N ≤ 100 )
다음 줄에 N개의 숫자 ai가 여백없이 주어진다. (0으로 시작할 수도 있다.) ( 0 ≤ ai ≤ 9 )
출력
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 가장 많은 카드의 숫자와 장 수를 차례로 출력한다.
코드
T = int(input())
for tc in range(1, T + 1):
# N : 카드의 개수
# cards : 주어진 카드를 문자열 리스트로 받아옴
# sort_cards : 중복된 카드의 수를 찾기 위한 리스트
N = int(input())
cards = list(map(int, input()))
card_cnt = [0] * 10
# 카드의 개수 만큼 반복하면서 주어진 카드의 i번째 수를 정수로 변환하고 해당 숫자의 인덱스 위치에 1을 더함
for i in range(N):
card_cnt[cards[i]] += 1
# max_cnt : 최대 중복값을 구하기 위한 변수를 0으로 초기화
max_cnt = 0
# 카드 중복 횟수를 저장한 리스트의 길이만큼 반복하면서 해당 리스트의 최댓값을 구함
for j in range(len(card_cnt)):
if max_cnt <= card_cnt[j]: # 만약 값이 같을 경우에는 뒤에 나오는 숫자로 값이 대체됨
max_cnt = card_cnt[j]
result = j # result : 해당 중복값을 가진 수를 구하기 위한 변수
print('#{} {} {}'.format(tc, result, max_cnt))
풀이 방법
리스트의 인덱스를 활용하여 카드 번호와 같은 인덱스 위치에 1씩 더해주는 방식으로 문제를 풀었다. 그리고 마지막에는 반복문과 if문을 활용하여 리스트의 최대값을 구해주었다.
Author And Source
이 문제에 관하여([SWEA] 4834 숫자카드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yujin19/SWEA-4834-숫자카드저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)