[Python] 백준 25206 | 너의 평점은 : 딕셔너리, 소수점 표현

heige·2023년 12월 7일
0

BOJ

목록 보기
18/46
post-thumbnail

문제

https://www.acmicpc.net/problem/25206

풀이

접근방식

  • (학점*과목평점) 총합을 담을 변수 생성
  • 학점 총합 받을 변수 생성
  • 성적 나타내는 딕셔너리 생성
  • 입력이 20개이므로 20번 돌며 과목명, 학점, 평점을 받는다.
  • 평점이 'P'가 아닐 경우 (학점*과목평점)와 학점을 생성된 변수에 더해간다.
  • 평균 계산
  • 소수점 표현
gsum = 0 # (학점*과목평점 총합)
asum = 0 # 학점 총합
grade = {'A+':4.5, 'A0':4.0, 'B+':3.5, 'B0':3.0, 'C+':2.5, 'C0':2.0, 'D+':1.5, 'D0':1.0, 'F':0}
for _ in range(20) :
        cname, a, b = input().split()
        if b != 'P' :
            gsum += float(a) * float(grade[b])
            asum += float(a)
avg = gsum/asum
print(round(avg, 6))

💡 배운 내용

딕셔너리 활용

딕셔너리 생성

  • 딕셔너리는 중괄호를 이용해 생성 가능하다. 키와 값의 쌍으로 구성되어있다.
dict = { key1:value1, key2:value2, key3:value3, ... }

딕셔너리 값 추가

d = {'a' : 'apple'}
d['b'] = 'banana'
print(d)
# {'a': 'apple', 'b': 'banana'}

딕셔너리 값 삭제

d= {'a': 'apple', 'b': 'banana'}
del d['b']
print(d)
# {'a': 'apple'}

딕셔너리 값 접근

d= {'a': 'apple', 'b': 'banana'}
print(d['a'])
print(d['b'])
# apple
# banana

딕셔너리 값 뽑아내기

d= {'a': 'apple', 'b': 'banana', 'c': 'cacao'}
k = d.keys()
print(k)
# dict_keys(['a', 'b', 'c'])

d= {'a': 'apple', 'b': 'banana', 'c': 'cacao'}
keys = d.keys()

for key in keys:
  print(key)

d= {'a': 'apple', 'b': 'banana', 'c': 'cacao'}
values = d.values()

for value in values:
  print(value)

소수점 표현

round() 함수

  • 실수형에서 가능하다.
# round(값, 반올림하려는 자릿수)
print(round(3.55555)) 
print(round(3.55555, 0)) 
print(round(3.55555, 1))
print(round(3.55555, 3))
print(round(3.55555, 4))

문자열 포맷팅 : format함수

  • 정수를 소수점으로 출력하고 싶다면 이 방법이 적절
print("{:.0f}".format(3.55555))
print("{:.1f}".format(3.55555))
print("{:.2f}".format(3.55555))
print("{:.3f}".format(3.55555))
  • 아래와 같이 인덱스 역할을 하기도 한다
print("{0}과 {0}".format(3.55555, 3.77777)) 
print("{0}과 {1}".format(3.55555, 3.77777))
print("{0:.3f}과 {1:.3f}".format(3.55555, 3.77777)) 
# 3.55555과 3.33333
# 3.55555과 3.77777
# 3.556과 3.778

문자열 포맷팅 : 서식 표현

print("%0.0f"%3.55555)
print("%0.1f"%3.55555)
print("%0.2f"%3.55555)
print("%0.3f"%3.55555)
  • 예를 들어 정수를 소수점으로 표현하고 싶다면 이런 식으로.
a = 3
print("%0.2f"%a)

문자열 포맷팅 : f-string

  • 문자열 앞에 "f"를 추가하고 중괄호 안에 {실수값:반올림하고자하는 자릿수}를 지정해주면 된다.
print(f"{3.55555:.0f}")
print(f"{3.55555:.1f}")
print(f"{3.55555:.2f}")
print(f"{3.55555:.3f}")
print(f"{3.55555:.4f}")

오늘로써 실버에 입성했다. 조금씩 풀다보니 꽤 오래 걸린 것 같다. 이번 달 안에 꾸준히 해서 꼭 골드에 들어가는 게 목표다. 매일 한 문제씩이라도 무조건 푸는 중이고, 그렇게 할 것이다.
꾸준함을 믿는다!

profile
웹 백엔드와 클라우드 정복을 위해 탄탄한 기반을 쌓아가고 있는 예비개발자입니다. 'IT You Up'은 'Eat You Up'이라는 표현에서 비롯되어, IT 지식을 끝까지 먹어치운다는 담고 있습니다.

0개의 댓글