반응형
코드
import sys
total = 0
dic = dict()
while 1:
word = sys.stdin.readline().rstrip()
if word == '':
break
total += 1
if word in dic: # 전에 이미 나왔으면
dic[word] += 1
else:
dic[word] = 1
sdic = dict(sorted(dic.items()))
for i in sdic:
a = sdic[i]
per = (a / total * 100)
print("%s %.4f" %(i, per))
설명
아무 입력도 들어오지 않을 때까지 while문을 돌려서 문자를 받는다.
딕셔너리를 사용했는데 만약 전에 들어온 값이면 value값을 1 증가시켜주고, 처음 들어온 값이면 value값을 1로 저장해준다. total 변수는 총 들어온 단어 개수로 나중에 백분율 계산을 위해 만들어주었다.
처음에 round를 이용하여 반올림을 했더니 틀렸다고 나왔다.
float에 대한 round() 의 동작은 예상과 다를 수 있습니다: 예 들어, round(2.675, 2) 는 2.68 대신에 2.67 을 제공합니다. 이것은 버그가 아닙니다: 대부분의 십진 소수가 float로 정확히 표현될 수 없다는 사실로부터 오는 결과입니다.
이렇다고 한다..
반응형
'알고리즘 > 자료구조' 카테고리의 다른 글
[백준][Python] 7662번 이중 우선순위 큐 (0) | 2022.02.22 |
---|---|
[백준][Python] 1927번 최소 힙 (0) | 2022.02.21 |
[백준][Python] 11286번 절댓값 힙 (0) | 2022.02.19 |
[백준][Python] 14425번 문자열 집합 (0) | 2022.02.18 |
[백준][Python] 11279번 최대 힙 (0) | 2022.02.17 |
댓글