딕셔너리에 종이름과 개수를 저장한다.
각 종이 차지하는 비율을 계산한 후 반올림 할 때 round()
함수는 해당 자리의 수가 5일 때 값이 불분명해지기 때문에 사용하지 않고 직접 연산을 해줬다.
소수점 넷째자리까지 반올림이므로 rate
에 0.00005를 더해준 뒤에 버림을 하면 같은 결과가 나온다.(math.floor()
는 정수를 리턴하기 때문에 사용할 수 없었다.)
rate
를 문자열로 바꾼 후 rate
의 정수부 길이에 따라 if-elif-else
를 통해 소수점 넷째자리까지 버림할 수 있도록 슬라이싱 했다.
이럴 필요없다.
그냥 프린트할 때 포맷팅하면 된다. 하도 오랜만에 ps하니까..별걸 다 잊어먹는다.
import sys
species = dict()
x = sys.stdin.readline()[:-1]
while x:
species[x] = species[x] + 1 if x in species else 1
x = sys.stdin.readline()[:-1]
n = sum(species.values())
for tree, cnt in species.items():
rate = (cnt / n * 100) + 0.00005
if rate < 10: species[tree] = str(rate)[:6]
elif rate < 100: species[tree] = str(rate)[:7]
else: species[tree] = str(rate)[:8]
species = sorted(species.items())
for tree, rate in species: print(tree, rate)
import sys
species = dict()
x = sys.stdin.readline()[:-1]
while x:
species[x] = species[x] + 1 if x in species else 1
x = sys.stdin.readline()[:-1]
n = sum(species.values())
for tree, cnt in species.items():
species[tree] = (cnt / n * 100)
species = sorted(species.items())
for tree, rate in species: print('%s %.4f'%(tree, rate))