백준 - 4344 (Python) - 평균은 넘겠지

박준영·2021년 6월 28일
0
post-thumbnail

더하기 사이클


문제

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.


입력

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.


출력

첫째 줄에 N의 사이클 길이를 출력한다.


코드

입력받은 점수의 평균을 구해서 평균 이상인 학생의 비율을 출력하는 문제이다.
소수점 이하 3자리까지 표기

  • 풀이

n = int(input()) # 테스트 케이스의 수

for _ in range(n):
    nums = list(map(int, input().split()))
    avg = sum(nums[1:])/nums[0]  
    # nums[0]: 학생의 수, nums[1:]: 0번 인덱스(학생 수)를 제외한 나머지 점수들
    # 점수들의 총합을 학생 수로 나누어 평균 점수 계산
    cnt = 0 # 싸이클 횟수
    for score in nums[1:]:
        if score > avg: 
            cnt += 1  # 평균 이상인 학생이 발견되면 카운팅
    rate = cnt/nums[0] *100 
    # 카운트 횟수(평균 이상의 학생 수)를 전체 인원의 수로 나눈 뒤의 백분율을 구한다.
    print(f'{rate:.3f}%') # 소수점 이하 3자리까지만 표기

1. '%'를 사용한 포맷팅 : 변수타입에 따라서 %s, %d, %f 구분해서 써줘야 한다.

  • %s는 문자열, %d는 정수, %f는 실수를 받는다.

  • %와 d 사이에 숫자는 포맷팅을 통해 표현되는 숫자나 문자의 자릿수를 의미한다.
    (기본적으로 오른쪽 정렬)

2. '{}'를 이용한 포맷팅 : 변수 타입 관계 없이 {} 속에 값을 입력한다.

  • {:.nf} - 실수를 표현할 때 소수점 아래 n번 째 자리까지만 표현되도록 반올림.

3. f-string 포맷팅 : ' ' 속 문자열 맨 앞에 f를 붙여주고, 중괄호 안에 직접 변수 이름이나 출력할 값 삽입.

  • f'문자열 {변수} 문자열' 형태로 사용.
  • 가독성이 뛰어나다.
  • 위 코드에서의 f'{rate:.3f}%'는 rate에 담긴 수의 .3f, 즉 소수점 세 자리까지만 표기한다는 뜻이다.

0개의 댓글