새벽에 알고리즘 문제 풀어보다가 시간초과 나서 머리 좀 식힐 겸, 파이썬 문법 연습 좀 할 겸 백준에서 안 풀어본 브론즈 문제 중에 하나를 골라서 풀어보았다.
4344. 평균은 넘겠지 (문제 링크: www.acmicpc.net/problem/4344)라는 아주 기초적인 알고리즘 문제였다.
쉬운 문제였지만 파이썬 초보인 나에게 공부할 만한 내용이 있었다.
1. 반올림
2. 소수점 이하 3번째 자리까지 출력하기
1. 반올림
보통 반올림, 올림, 내림의 경우 다른 언어에서도 round(반올림), ceil(올림), floor(내림)를 사용하고, 찾아보니 파이썬에서도 같은 방법을 사용하면 된다. 다만, round 함수의 경우 내장되어 있지만, ceil과 floor는 import math를 하고 math.ceil과 math.floor의 형태로 사용해야 한다.
아무튼 결론은 반올림을 하기 위해서 round 함수를 사용해야 한다는 건데, 문제는...
print(round(40.000, 3))
이렇게 round 함수를 써서 소숫점 이하 3번째 자리까지 표시하라고 설정을 해도, 40.000%가 아니라 40.0%으로 출력이 되어버린다. 끝자리가 0이면 출력을 하지 않는다는 점이 round 함수의 문제점이라고 한다.
2. 소수점 이하 3번째 자리까지 출력하기
그래서 어떤 방법으로 40.000%을 출력해줄 수 있을까 고민하다가 서식을 지정할 수 있는 format 메소드에 대해서 알게 되었다.
좀 어렵긴 하지만 익숙해지면 도움이 될 것 같다.
아무튼 결론은 이 format 메소드를 이용해서 내가 원하는 대로 값을 출력할 수 있다는 거니까 한 번 해보자.💪🏻
print("{}%".format(round(40.000, 3)))
print("{:.3f}%".format(40.0000))
print("{:.3f}%".format(40.6664))
print("{:.3f}%".format(40.6666))
출력 결과:
40.0%
40.000%
40.666%
40.667%
위에서 설명한 대로, round 함수를 사용하면 반올림이 되기는 하지만 끝자리가 0일 때는 자기 마음대로 자릿수를 짤라먹고 출력해버린다.
반면, format 메소드를 이용해서 "{:.3f}" 이런 식으로 조건을 걸어주면 내가 원하는 대로 소수점 이하 3번째 자리까지 정상적으로 출력되는 모습을 확인할 수 있다. 그리고 테스트 코드를 통해 확인해 보니 알아서(?) 반올림 처리를 하는 듯하다. 이 부분에 대해서는 나중에 조금 더 자세히 공부하도록 하고 오늘은 이 정도 선에서 끝!
format 메소드를 자유자재로 사용하기 위해서 좀 더 익숙해질 필요가 있을 것 같다.
😎 참고할 만한 사이트:
'📚Languages > Python3 개념·문법·에러' 카테고리의 다른 글
[Python3 문법] packing(패킹)과 unpacking(언패킹)의 개념과 객체 요소 출력하기 (0) | 2020.10.24 |
---|---|
[Python3 문법] list(리스트) 내의 최댓값과 그때의 index(인덱스) 값 구하기 (feat.enumerate) (0) | 2020.10.21 |
댓글