<문제 링크>
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부터는 올림)
'프로그래밍 > Python' 카테고리의 다른 글
백준_python 15686번 치킨 배달(combiantions, 백트래킹) (1) | 2024.06.13 |
---|---|
백준_python 2805번 나무 자르기 (이분 탐색, 시간초과) (0) | 2024.06.11 |
백준_python 1269번 대칭 차집합 (0) | 2024.06.05 |
파이썬_zip() 함수 (0) | 2024.06.04 |
백준_python 1931번 회의실 배정 (리스트 정렬) (0) | 2024.05.31 |