알고리즘/문제풀이

[Python] 백준 4358 생태학

정찡이 2021. 11. 26. 16:55
728x90

1. 문제 링크

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

 

4358번: 생태학

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

www.acmicpc.net

 

2. 문제 요약

나무의 종이 전체 몇 %를 차지하는지 구하기

 

3. 아이디어 정리

  1. defaultdict를 이용하여 모든 dict 값이 0으로 세팅
  2. 입력된 값 + 1을 해준다.
  3. 나무의 종이 차지하는 비율을 출력한다.

 

4. 문제 풀이

4-1. 내풀이

import sys
from collections import defaultdict

dict_ = defaultdict(int)
count = 0
while True:
    n = str(sys.stdin.readline().rstrip())
    if not n:
        break
    dict_[n] += 1
    count += 1

dict_ = sorted(dict_.items())
for k, v in dict_:
    print('%s %.4f' % (k, round((v / count * 100), 4)))

 

5. 결론

  • dict 사용하는 문제
반응형