Algorithm
SWEA 4834 숫자카드 (python)
광보기
2021. 4. 19. 14:52
반응형
4834. [파이썬 S/W 문제해결 기본] 1일차 - 숫자 카드 D2
문제
0에서 9까지 숫자가 적힌 N장의 카드가 주어진다.
가장 많은 카드에 적힌 숫자와 카드가 몇 장인지 출력하는 프로그램을 만드시오. 카드 장수가 같을 때는 적힌 숫자가 큰 쪽을 출력한다.
[입력]
첫 줄에 테스트 케이스 개수 T가 주어진다. ( 1 ≤ T ≤ 50 )
다음 줄부터 테스트케이스의 첫 줄에 카드 장수 N이 주어진다. ( 5 ≤ N ≤ 100 )
다음 줄에 N개의 숫자 ai가 여백없이 주어진다. (0으로 시작할 수도 있다.) ( 0 ≤ ai ≤ 9 )
[출력]
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 가장 많은 카드의 숫자와 장 수를 차례로 출력한다.
풀이
import sys
sys.stdin = open("input.txt")
T = int(input())
def max_card(N,numbers):
# 버블 소트 정렬
for i in range(len(numbers) - 1, 0, -1):
for j in range(0, i):
if numbers[j] > numbers[j + 1]:
numbers[j], numbers[j + 1] = numbers[j + 1], numbers[j]
# 맥스값 초기화
max_count = 0
max_number = numbers[0]
for number in numbers:
# 카운트 초기화
count = 0
for i in range(len(numbers)):
if numbers[i] == number:
count += 1
# 버블소트로 인해 같을 경우 자동으로 더 큰 값이 적용
if count>=max_count:
max_count = count
max_number = number
return max_number, max_count
for tc in range(1, T+1):
# 카드장수 N
N = int(input())
# 카드 숫자 리스트
numbers = list(map(int,input()))
result = max_card(N, numbers)
print("#{} {} {}".format(tc,result[0],result[1] ))
반응형