BOJ/문자열 (해시,맵)

[Python] 백준 - 4358번 : 생태학

JWonK 2021. 9. 14. 20:51
728x90
반응형

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

 

4358번: 생태학

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

www.acmicpc.net

이번 문제는 문자열 문자라 파이썬으로 풀어보았다.

요즘 학교 수업 시간에 파이썬을 배우고 있는데 확실히 문자열 관련 문제는 C++보다는 파이썬이 훨씬 풀기에 쉬운 것 같다. 

딕셔너리를 이용해서 해결하였고, 딕셔너리도 collections에서 defaultdict()으로 추가까지 할 수 있게 해주었다.

그리고 입력이 끝나면 key값을 기준으로 정렬해주고 출력만 해주면 된다.!

 

import sys
from collections import *

Information = defaultdict()
Cnt = 0

try:
    while(True):
        name = input()
        if name in Information:
            Information[name] += 1
        else:
            Information[name] = 1
        Cnt += 1
except:
    answer = sorted(Information.items())
    for i in answer:
        print('%s %.4f' % (i[0], i[1] / Cnt * 100))
    exit(0)

코드도 훨씬 짧고 직관적이다. 

728x90
반응형