프로그래밍/Python
백준_python 4358번 생태학 (소수 반올림)
O'bin
2024. 6. 10. 13:30
<문제 링크>
https://www.acmicpc.net/problem/4358
<정답 코드>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import sys
from collections import defaultdict
from decimal import Decimal, ROUND_HALF_UP
input = sys.stdin.readline
trees = defaultdict(int)
while True:
tree = input().rstrip()
# 입력값이 더 없으면 입력 종료
if tree == '':
break
trees[tree] += 1
for i in sorted(trees):
v = Decimal(f'{trees.get(i) / sum(trees.values()) * 100}')
print(i, v.quantize(Decimal('1.0000'), rounding=ROUND_HALF_UP))
|
cs |
나무이름 : 개체수 형태로 trees 딕셔너리에 입력 후,
( 특정 종 그루 수 / 전체 나무 수 ) * 100 으로
전체에서 특정 종이 차지하는 비율을 구하는 문제다.
문제 접근 자체는 쉬우나 반올림이 문제였다.
Decimal 모듈을 사용해 해결할 수 있다.
line 18 ) 반올림 대상 소수를 Decimal 객체로 변환
line 19 ) Deciaml 객체를 반올림하여 소수 네번째 자리까지 출력
Decimal('1.0000') : 소수점 네 자리 형식
rounding=ROUND_HALF_UP : 반올림 형식 지정, 사사오입 방식으로 반올림(4까지는 버림, 5부터는 올림)