문제
4358번: 생태학
프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어
www.acmicpc.net
알고리즘
- 반복문을 통해 나무의 이름을 입력받는다.
- 입력받은 나무가 없다면 반복문을 멈춘다.
- 나무의 종류에 이미 나무가 있다면 카운트한다.
- 나무의 종류에 나무가 없다면 나무를 추가한다.
- 나무의 개수를 카운트한다.
- 사전 순으로 정렬해주기 위해 나무의 종류를 리스트로 만든다.,
- 만든 리스트를 오름차순으로 정렬하여 사전 순으로 정렬한다.
- 사전 순으로 정렬한 나무의 이름순으로 백분율을 계산해서 출력한다.
코드
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 내장 함수를 확인해보면 알 수 있다.
내장 함수 — Python 3.10.1 문서
내장 함수 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수와 형이 내장되어 있습니다. 여기에서 알파벳 순으로 나열합니다. abs(x) 숫자의 절댓값을 돌려줍니다. 인자는 정수, 실수 또는 __
docs.python.org
round에 경우 round(0.5)와 round(-0.5)는 모두 0이고, round(1.5)는 2가 된다.
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'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 |