[백준/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 서식 지정에서는 ' ' 안에 작성해 주면 됐는데 말입니다. 암튼 우선은 대충 이 정도면 정리가 될 것 같다.

끗.

좋은 웹페이지 즐겨찾기