프로그래밍/백준

[알고리즘] 백준 4358 파이썬 - 생태학

매 석 2022. 12. 14. 19:13
반응형

 

 

4358번: 생태학

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

www.acmicpc.net

문제

생태학에서 나무의 분포도를 측정하는 것은 중요하다. 그러므로 당신은 미국 전역의 나무들이 주어졌을 때, 각 종이 전체에서 몇 %를 차지하는지 구하는 프로그램을 만들어야 한다.

 

 

문제풀이

import sys
ans={}
cnt=0
#01
for i in sys.stdin:
    if i=='\n':
        break
    a=i.rstrip()
    cnt+=1
    if a in ans:
        ans[a]+=1
    else:
        ans[a]=1
#02
ans=sorted(ans.items(),key=lambda x:x[0])
for i in ans:
    x=i[1]/cnt*100
    print('{} {:.4f}'.format(i[0],x))

- #01 : 입력의 끝이 정해져있지 않기에, "\n"이 마지막으로 들어왔을 때 멈춘다.

           그 외의 정상값 입력 시 cnt를 1씩 늘려주고, ans 딕셔너리에 있다면 +1을

           없다면 ans[a]=1이라는 값을 만들어준다.

- #02 : 입력받은 값을 기준으로 딕셔너리를 정렬해준다.

           개수를 아까 구한 cnt(전체개수)로 나누고 *100을 해주면 백분율로 표시된다.

           이를 format을 사용하여 문제에서 원하는 소수점 4자리로 설정 후 출력해준다.