문제
알고리즘
- 반복문을 통해 나무의 이름을 입력받는다.
- 입력받은 나무가 없다면 반복문을 멈춘다.
- 나무의 종류에 이미 나무가 있다면 카운트한다.
- 나무의 종류에 나무가 없다면 나무를 추가한다.
- 나무의 개수를 카운트한다.
- 사전 순으로 정렬해주기 위해 나무의 종류를 리스트로 만든다.,
- 만든 리스트를 오름차순으로 정렬하여 사전 순으로 정렬한다.
- 사전 순으로 정렬한 나무의 이름순으로 백분율을 계산해서 출력한다.
코드
import sys
word = {} # 나무의 종류
n = 0 # 나무의 개수
# 반복문을 통해 나무를 입력받는다.
while True:
tree = str(sys.stdin.readline().rstrip())
# 입력받은 나무가 없다면 반복문을 멈춘다.
if not tree:
break
# 나무의 종류에 이미 나무가 있다면 카운트
if tree in word:
word[tree] += 1
# 나무의 종류에 나무가 없다면 나무를 추가
else:
word[tree] = 1
n += 1 # 나무의 개수 카운트
# 사전순으로 정렬해주기 위해 나무의 종류를 리스트로 만든다.
trees = list(word.keys())
trees.sort() # 오름차순으로 정렬
# 사전순으로 정렬한 나무의 이름순으로 백분율을 계산해 출력
for j in trees:
print("%s %.4f" % (j, word[j] / n * 100))
실패한 코드(16%..틀렸습니다.)
import sys
word = {} # 나무의 종류
n = 0 # 나무의 개수
# 반복문을 통해 나무를 입력받는다.
while True:
tree = str(sys.stdin.readline().rstrip())
# 입력받은 나무가 없다면 반복문을 멈춘다.
if not tree:
break
# 나무의 종류에 이미 나무가 있다면 카운트
if tree in word:
word[tree] += 1
# 나무의 종류에 나무가 없다면 나무를 추가
else:
word[tree] = 1
n += 1 # 나무의 개수 카운트
# 사전순으로 정렬해주기 위해 나무의 종류를 리스트로 만든다.
trees = list(word.keys())
trees.sort() # 오름차순으로 정렬
# 사전순으로 정렬한 나무의 이름순으로 백분율을 계산해 출력
for j in trees:
print(j, round(word[j] / n * 100, 4))
round 내장 함수를 확인해보면 알 수 있다.
round에 경우 round(0.5)와 round(-0.5)는 모두 0이고, round(1.5)는 2가 된다.
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1254번(파이썬): 팰린드롬 만들기 (0) | 2022.01.04 |
---|---|
[baekjoon] 백준 10430번(파이썬): 나머지 (0) | 2022.01.03 |
[baekjoon] 백준 15904번(파이썬): UCPC는 무엇의 약자일까? (0) | 2022.01.02 |
[baekjoon] 백준 14425번(파이썬): 문자열 집합 (0) | 2022.01.01 |
[baekjoon] 백준 1439번(파이썬): 뒤집기 (0) | 2021.12.31 |