250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 리액트
- 한글 공부 사이트
- React Hooks
- 파이썬 for in
- useState
- tanstack query
- 자바스크립트
- 내일배움캠프 프로젝트
- 내배캠 프로젝트
- 리액트 프로젝트
- 파이썬 enumerate
- typeScript
- 리액트 훅
- 타입스크립트
- 리액트 공식문서
- 파이썬 반복문
- 프로그래머스
- 타입스크립트 리액트
- 타입스크립트 props
- useEffect
- 코딩테스트
- JavaScript
- 내일배움캠프 최종 프로젝트
- 파이썬 for
- Next 팀 프로젝트
- REACT
- 내일배움캠프
- 파이썬 slice
- 파이썬 replace
- 파이썬 딕셔너리
Archives
- Today
- Total
sohyeon kim
[Python] 백준 : 생태계 4358, 개수를 모르는 input, 소수점 4자리, EOFError 시간 초과, % 본문
Coding Test
[Python] 백준 : 생태계 4358, 개수를 모르는 input, 소수점 4자리, EOFError 시간 초과, %
aotoyae 2025. 1. 3. 23:57728x90
📝 문제
생태학에서 나무의 분포도를 측정하는 것은 중요하다. 그러므로 당신은 미국 전역의 나무들이 주어졌을 때, 각 종이 전체에서 몇 %를 차지하는지 구하는 프로그램을 만들어야 한다.
프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어진다.
주어진 각 종의 이름을 사전순으로 출력하고, 그 종이 차지하는 비율을 백분율로 소수점 4째자리까지 반올림해 함께 출력한다.
🫠 나의 풀이
# 시간 초과
while True:
try:
tree = input()
total += 1
if tree in dic:
dic[tree] += 1
else:
dic[tree] = 1
except EOFError:
break
import sys
sys.stdin = open('input.txt', 'r')
# input = sys.stdin.readline
dic = {}
total = 0
while True:
tree = input().strip()
if tree == '':
break
total += 1
if tree in dic:
dic[tree] += 1
else:
dic[tree] = 1
sorted_dic = dict(sorted(dic.items()))
for key, value in sorted_dic.items():
per = value / total * 100
print("%s %.4f" % (key, per))
처음에 갯수를 모르는 input 을 받으니 EOFError 가 발생하면 while 문이 종료되도록 했는데 시간 초과가 떴다.
찾아보니 이는 종료 조건이 명시적이지 않고 예외 발생을 기다려야 해서 입력이 많을 경우에 느리고 비효율적이라고 한다.
➡️ if 문으로 명확한 조건을 설정해 빠르게 종료하자
🧞♂️ 다른 사람의 풀이
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))
🔗 https://imzzan.tistory.com/29
🔗 https://blockdmask.tistory.com/534
🔗 https://www.acmicpc.net/problem/4358
728x90
반응형
'Coding Test' 카테고리의 다른 글
[Python] 백준 : 괄호 끼워넣기 11899, 스택, stack (0) | 2025.01.28 |
---|---|
[Python] 백준 : 후보 추천하기 1713, dictionary, pop(), min() (0) | 2025.01.02 |
[Python] 코드잇 : 리스트 항목 합 탐색, Brute Force (0) | 2024.12.18 |
[Python] 백준 : 질문은 계속돼 32194, 누적합, prefix (0) | 2024.12.17 |
[Python] 백준 : 방 번호 1475, dict, list (1) | 2024.12.11 |