[백준] 생태학 풀이
문제 자체는 어렵지 않으나, EOF 처리와 소숫점 출력이 까다로웠다.
일단 stdin.readline() 함수의 경우 EOF 처리가 조금 다르다고 한다.
추후 자세히 공부하기로 하고, 일단 input으로 문제를 해결하였다.
try - except 문을 통하여 input 단에서 에러가 발생하면 반복문을 종료하도록 하였다.
소숫점 출력도 round() 함수를 사용하면 에러가 발생한다. 우리가 파이썬에서 보는 float 형태의 숫자는 정확한 숫자가 아니라 가장 근접한 수인 경우가 있는데, 이 차이가 반올림 결과에 영향을 미치는 경우가 있다.
소숫점 5번째 자리에서 반올림하므로 0.00005를 더한 뒤, 문자열로 바꾸었고 소숫점(.)의 인덱스를 찾은 뒤 그 뒤로 4자리 더 출력해주면 된다.
dic = {}
while True:
try:
a = input()
if a in dic:
dic[a] += 1
else:
dic[a] = 1
except:
break
arr = list(dic.items())
arr.sort()
total = sum(dic.values())
for i in range(len(arr)):
k = arr[i][1] / total * 100
k += 0.00005
k = str(k)
idx = k.find('.')
k = k[:idx + 5]
print(arr[i][0], k)
Author And Source
이 문제에 관하여([백준] 생태학 풀이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gusdn3477/백준-생태학저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)