Skip to main content

백준 4358 생태학

·92 words·1 min· loading

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

4358번: 생태학프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어www.acmicpc.net

이전에 이럴때 dict를활용하는 문제를 풀어서 쉬웠다.

각각의 입력을 받고, dict에있으면 값에 1을 더해주고, 없으면 값을 1로 생성한다.

입력이없으면 멈춘다.

사전순을 위해 dict를 정렬해주고, print하면된다. (value는 모든 value의 합으로 나눠주고 100을 곱해준다)

단하나까다로웠던게, 파이썬에서는 round가 정확하지 않다.

따라서 :.4f를 이용해서 출력해야한다.

import sysd=dict()while True:    i=sys.stdin.readline().strip()    if not i:
        break    if i in d :        d[i]+=1    else:        d[i]=1
all=sum(d.values())d=sorted(d.items())for i, j in d:
    print(f'{i} {j/all*100:.4f}')