DataStucture_2_04_생태학(4385)

DataStucture2_04생태학(4385)

문제

프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어진다.

입력

Red Alder
Ash
Aspen
Basswood
Ash
Beech
Yellow Birch
Ash
Cherry
Cottonwood
Ash
Cypress
Red Elm
Gum
Hackberry
White Oak
Hickory
Pecan
Hard Maple
White Oak
Soft Maple
Red Oak
Red Oak
White Oak
Poplan
Sassafras
Sycamore
Black Walnut
Willow

출력

Ash 13.7931
Aspen 3.4483
Basswood 3.4483
Beech 3.4483
Black Walnut 3.4483
Cherry 3.4483
Cottonwood 3.4483
Cypress 3.4483
Gum 3.4483
Hackberry 3.4483
Hard Maple 3.4483
Hickory 3.4483
Pecan 3.4483
Poplan 3.4483
Red Alder 3.4483
Red Elm 3.4483
Red Oak 6.8966
Sassafras 3.4483
Soft Maple 3.4483
Sycamore 3.4483
White Oak 10.3448
Willow 3.4483
Yellow Birch 3.4483

풀이

  • input값이 없다면 break
  • 딕셔너리에 키가 있는지 확인
  • 키를 기준으로 오름차순 정렬하기 만약 sorted(dic.keys())라면 키값만 저장됨

코드

import sys
sys.stdin = open("input.txt","rt")
def input():
    return sys.stdin.readline().rstrip()

# 값 넣는 part
dic = dict()
cnt = 0

while True:
    s = input()
    if s == "": # input값이 없다면 break
        break
    cnt += 1
    if s in dic: # 딕셔너리에 키가 있는지 확인
        dic[s] += 1
    else: 
        dic[s] = 1 #

dic = sorted(dic.items()) # 키를 기준으로 오름차순 정렬하기 만약 sorted(dic.keys())라면 키값만 저장됨

# 출력 part
for val, key in dic:
    num = (key/cnt)*100.0
    if int(num) //2 ==0:
        num = num + 0.0005
    print(val, round(num, 4))
#소수점 넷째자리까지만 표현하고 싶다면, 파이썬 내장 함수인 round() 함수를 이용
# 반올림은 round함수를 이용해보자. round함수에 입력인자로 값이나 변수를 넣으면 소수점 첫째 자리에서 반올림 해 준다. 
# 소수점 n번째 자리까지 반올림하고 싶다면, 두 번째 입력인자에 값을 넣으면 된다.

# 오류해결 !!!!!
#파이썬은 사사오입 원칙을 따른다. 반올림할 자리수가 5이면 앞자리 숫자가 짝수면 내림, 홀수면 올림이다.
# 4.5 의 경우는 결과 4 / 3.5의 경우 결과는 4 따라서 짝수인 경우 0.1을 더하여 round 함수를 사용해야 한다.

배운 것

처음에 파일을 다 읽어야 하는 줄 알고 pthon에서 파일 전체를 한줄 한줄 읽는 방법을 search해서 공부했다.
#f = open("input.txt", "rt")

  • line = f.readline().strip()
  • readline()/ 한 줄씩 읽는다 / .strip()으로 개행 문자를 지운다
  • if not line: break # 더 이상 읽을 문자열이 없는 경우 "" 리턴한다.
  • f.close()# 파일 닫기

필요는 없었지만 알아둬라 ㅎㅎ

코멘트

#소수점 넷째자리까지만 표현하고 싶다면, 파이썬 내장 함수인 round() 함수를 이용

  • 반올림은 round함수를 이용해보자. round함수에 입력인자로 값이나 변수를 넣으면 소수점 첫째 자리에서 반올림 해 준다.
  • 소수점 n번째 자리까지 반올림하고 싶다면, 두 번째 입력인자에 값을 넣으면 된다.
  • 오류해결 !!!!!
    #파이썬은 사사오입 원칙을 따른다. 반올림할 자리수가 5이면 앞자리 숫자가 짝수면 내림, 홀수면 올림이다.
  • 4.5 의 경우는 결과 4 / 3.5의 경우 결과는 4 따라서 짝수인 경우 0.1을 더하여 round 함수를 사용해야 한다.

좋은 웹페이지 즐겨찾기