Algorithm/SW Expert Academy

[Python] 4834. 숫자 카드

느낌표 공장장 2021. 8. 10. 11:35

 

# tc 수
tc = int(input())

# tc 수만큼 반복
for i in range(1, tc+1):
    # 카드 장수 n
    n = int(input())
    # n개의 숫자 cards (0은 제거한다)
    cards = input()
    # 카드 개수가 들어갈 리스트
    cards_count = [0 for i in range(10)]

    # 카드가 담긴 cards를 돌며 카드 개수 세기
    for card in cards:
        # 장수가 같은 경우에는 큰 숫자를 출력해야하니
        # 큰 카드를 앞쪽부터 저장한다.
        cards_count[9-int(card)] += 1

    # 가장 많은 카드 개수
    max_card = max(cards_count)

    # index 함수를 활용하여 가장 많은 카드 개수를 가진 인덱스를 출력한다.
    print('#{} {} {}'.format(i, 9-cards_count.index(max_card), max_card))

 

* 내장함수 (index 함수, max 함수) 안쓰고 풀어보기

# tc 수
tc = int(input())

# tc 수만큼 반복
for idx in range(1, tc+1):
    # 카드 장수 n
    n = int(input())
    # n개의 숫자 cards
    cards = int(input())
    # 카드 개수가 들어갈 리스트
    cards_count = [0 for i in range(10)]

    # 카드가 담긴 cards를 돌며 카드 개수 세기
    for i in range(n):
        # 나머지를 떼서 해당 인덱스(카드 수)에 저장
        cards_count[cards%10] += 1
        cards //= 10

    # 가장 많은 카드와 그 개수 초기화
    max_card = 0
    max_idx = 0
    for i in range(10):
        # 카드 개수가 저장되어 있는 값보다 크다면 그 카드의 인덱스(카드 숫자)와 개수를 저장한다.
        if cards_count[i] >= max_card:
            max_card = cards_count[i]
            max_idx = i

    print('#{} {} {}'.format(idx, max_idx, max_card))

 

 

'Algorithm > SW Expert Academy' 카테고리의 다른 글

[Python] 1209. sum  (0) 2021.08.11
[Python] 1208. Flatten  (0) 2021.08.11
[Python] 4831. 전기버스  (0) 2021.08.10
[Python] 4835. 구간합  (0) 2021.08.10
[Python] 4828. min max  (0) 2021.08.10