[파이썬][백준 4358][💛골드 5] 생태학 (map, 소수 출력)

Date:     Updated:

Categories:

Tags:

🧞‍♂️ 난이도

💛 골드 5


🧞‍♂️ 문제

https://www.acmicpc.net/problem/4358

image


🧞‍♂️ 내 풀이 ⭕

  1. 입력을 받으면서 dictionary로 숫자를 세어준다

  2. dic에 있는 key, value 를 heapq 에 넣는다 (그럼 뺄때 사전순으로 출력 된다)

  3. heapq에 값들을 하나씩 빼서, 전체 나무 개수로 나눠주고 출력해준다

🧞‍♂️ 파이썬 코드

import sys, heapq, collections
input = sys.stdin.readline
h = []
dic = collections.defaultdict(int)
N = 0
while True:
    tree = input().rstrip()
    if not tree:
        break
    dic[tree] += 1
    N += 1

for tree, cnt in dic.items():
    heapq.heappush(h, (tree, cnt))

while h:
    tree, cnt = heapq.heappop(h)
    print('%s %.4f' %(tree, cnt/N*100))

아니면 heapq 없이 그냥 내림차순으로 정렬해서 하나씩 pop해도 될것같다 이런식으로

import sys, collections
input = sys.stdin.readline
trees = []
dic = collections.defaultdict(int)
N = 0
while True:
    tree = input().rstrip()
    if not tree:
        break
    dic[tree] += 1
    N += 1

for tree, cnt in dic.items():
    trees.append((tree, cnt))

trees.sort(reverse=True)
while trees:
    tree, cnt = trees.pop()
    print('%s %.4f' %(tree, cnt/N*100))


맨 위로 이동하기

BOJ 카테고리 내 다른 글 보러가기