생태학에서 나무의 분포도를 측정하는 것은 중요하다. 그러므로 당신은 미국 전역의 나무들이 주어졌을 때, 각 종이 전체에서 몇 %를 차지하는지 구하는 프로그램을 만들어야 한다.
sys.stdin.readline
사용한다.round()
를 사용하면 에러가 발생하므로 %.4f
를 사용해야 한다.import sys
input = sys.stdin.readline
dic = {}
n = 0
while True:
tree = input().rstrip()
if len(tree) == 0:
break
if tree in dic:
dic[tree] += 1
else:
dic[tree] = 1
n += 1
ans = sorted(dic.items(), key=lambda x: x[0])
for answer in ans:
print(answer[0], "%.4f" % (answer[1] * 100 / n))
💡 계속 오류가 나서 뭐가 틀렸나 했는데.. round()
를 사용하면 통과가 안된다.. 게시판에 반례 검색해보다가 알게 되었다. 파이썬 공식 문서를 참고하면 아래와 같은 내용을 확인할 수 있다.
참고 : float에 대한 round() 의 동작은 예상과 다를 수 있습니다: 예를 들어, round(2.675, 2) 는 2.68 대신에 2.67 을 제공합니다. 이것은 버그가 아닙니다: 대부분의 십진 소수가 float로 정확히 표현될 수 없다는 사실로부터 오는 결과입니다.