[백준/python] 4344
몇 가지 출력 형식을 짚고 넘어가야 할 것 같아서 정리겸 작성해 보려고 한다.
우선 내가 작성한 코드.
C = int(input())
for _ in range(C):
N = list(map(int, input().split()))
count = 0
if 1 <= N[0] <= 1000:
av = sum(N[1:])/N[0]
for i in N[1:]:
if i > av:
count += 1
rate = count/N[0] * 100
print(f'{rate:.3f}%') # 막혔던 부분
사실 count = 0을 for문 밖에 적어서 N이 다음줄로 넘어가는데도 평균값이 누적되길래 완전 띠용이었다. 알고 보니까 다음으로 넘어갈 때 초기화를 해 줘야 해서 그랬던 거였다.
아무튼 출력 문제!!
📒 출력 형식
📌 round
round(3.141592) # 3
round(3.141592, 2) # 3.14
round(31.41592, -1) # 30.0
말로 설명 안 하고 대충 예시 이렇게만 봐도 알겠쥬? 파이썬에 내장된 반올림 함수인데 뒤에 숫자를 붙이지 않으면 항상 소수점 첫째 자리부터 반올림. (기본이 1이라는 뜻) 이걸 4344 문제에 적용해 보면 아래처럼 작성하면 된다.
print(round(rate, 3))
근데 이 간단한 게 있는데 저렇게 어렵게 한 이유는 백준 출력 예시와 다르게 출력됐기 때문.... 세 자리 수까지 반올림하는 걸 원해서 3을 썼는데도 40.000이 아닌 40.0까지 출력하고 끝난다. 아무래도 뒤에 있는 0 두 개는 필요 없다고 생각해서 자체적으로 제외시키는 듯. 그래서 할 수 없이 다른 방법을 찾았다.
📌 format 서식 지정
print('{:.3f}%'.format(rate)) # '{:.nf}'.format(number)
내가 백준 코드에 사용한 것과 별반 다르지 않다. 이렇게 하면 내가 원했던 대로 출력된다.
📌 f-string
print(f'{rate:.3f}%') # f'{number:.nf}%'
이게 백준 코드에 내가 적용한 방식.
📌 '%.nf'
print('%.3f' %rate)
이렇게도 사용 가능. 근데 문자열을 어떻게 적용하는지 모르겠어서 이걸 사용 안 했다. (띄어쓰기 사용하지 않고 어떻게 바로 %를 붙이는지 모르겠다는 뜻....) f-string이나 format 서식 지정에서는 ' ' 안에 작성해 주면 됐는데 말입니다. 암튼 우선은 대충 이 정도면 정리가 될 것 같다.
끗.
Author And Source
이 문제에 관하여([백준/python] 4344), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dontki11it/백준python-4344저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)