Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 기초
- 마크다운문법
- database
- Python
- 수열
- 그리디알고리즘
- httpCode
- 데이터베이스
- 코딩테스트
- NoSQL
- Algorithm
- 알고리즘
- mongoDB
- 수학
- 탐색알고리즘
- 데이터
- 코딩문제
- 마크다운
- db
- 그리디
- 코테
- 파이썬
- 그래프
- 알고리즘기초
- 소수
- chatGPT
- 백준
- Markdown
- 몽고DB
- 인프콘2024
Archives
- Today
- Total
Dev_from the Bottom
#31. Algorithm21_python) 평균은 넘겠지_백준 4344 본문
문제) 평균은 넘겠지
- 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
입력)
- 첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
- 둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력)
- 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
step1) 테스트1 : 1행만
n = 5
scores = [50, 50, 70, 80, 100]
sum = 0 # 학생 점수 총합 변수
for i in scores:
sum += i
print(sum) # 점수 총합 : 350
avg = sum / n # 점수 평균
print(avg) # 점수 평균 : 70.0
over = 0 # 평균 초과 학생 수 표현 변수
for i in scores: # 점수를 하나씩 꺼내서,
if i > avg: # 평균보다 크면,
over += 1 # +1
print(over) # 2명
answer = (over / n) * 100 # 비율
print(f'{answer :.3f}%')
>>>
350
70.0
2
40.000%
step2) 테스트2 : 1행 입력 받기
n1 = int(input()) # 5
scores = list(map(int, input().split()))
sum = 0
for i in scores:
sum += i
avg = sum / n1
over = 0
for i in scores:
if i > avg:
over += 1
answer = (over / n1) * 100
print(321)
print(f'{answer :.3f}%')
>>>
5
50 50 70 80 100
321
40.000%
step3) 테스트3 : 입력 방식 수정 - 한 줄에 다 받기
temp = list(map(int, input().split())) # 임시 변수에 한행의 입력값을 다 받음
n = temp[0] # 첫번째 요소는 변수 n에 할당
scores = temp[1:] # 뒤 요소들은 scores라는 list에 할당
print(n) # 5
print(scores) # [50, 50, 70, 80, 100]
sum = 0
for i in scores:
sum += i
avg = sum / n
over = 0
for i in scores:
if i > avg:
over += 1
answer = (over / n) * 100
print(f'{answer :.3f}%')
>>>
5 50 50 70 80 100
5
[50, 50, 70, 80, 100]
40.000%
step4) 시도1 : 1행
temp = list(map(int, input().split()))
n = temp[0]
scores = temp[1:]
sum = 0
for i in scores:
sum += i
avg = sum / n
over = 0
for i in scores:
if i > avg:
over += 1
answer = (over / n) * 100
print(f'{answer :.3f}%')
>>>
5 50 50 70 80 100
40.000%
step5) 시도2 : N값 고정
c = 5 # c = 5로 고정한다고 가정
for _ in range(c): # c번 반복
temp = list(map(int, input().split()))
n = temp[0]
scores = temp[1:]
sum = 0
for i in scores:
sum += i
avg = sum / n
over = 0
for i in scores:
if i > avg:
over += 1
answer = (over / n) * 100
print(f'{answer :.3f}%')
>>>
5 50 50 70 80 100
40.000%
7 100 95 90 80 70 60 50
57.143%
3 70 90 80
33.333%
3 70 90 81
66.667%
9 100 99 98 97 96 95 94 93 91
55.556%
step6) 최종
c = int(input()) # c 입력 받기
for _ in range(c):
temp = list(map(int, input().split()))
n = temp[0]
scores = temp[1:]
sum = 0
for i in scores:
sum += i
avg = sum / n
over = 0
for i in scores:
if i > avg:
over += 1
answer = (over / n) * 100
print(f'{answer :.3f}%')
>>>
5
5 50 50 70 80 100
40.000%
7 100 95 90 80 70 60 50
57.143%
3 70 90 80
33.333%
3 70 90 81
66.667%
9 100 99 98 97 96 95 94 93 91
55.556%
다른 풀이) 참조 : https://ooyoung.tistory.com/62
n = int(input())
for _ in range(n):
nums = list(map(int, input().split()))
avg = sum(nums[1:])/nums[0] # 평균을 구함 (nums[0]: 학생수, nums[1:] 점수)
cnt = 0
for score in nums[1:]:
if score > avg:
cnt += 1 # 평균 이상인 학생 수
rate = cnt/nums[0] *100
print(f'{rate:.3f}%')
# 배운 점
- f포멧팅 소숫점 자리 표현 방식 리마인드
- 리스트 입력 받아서, 필요한 변수로 나누기
# 소회
- 99.99% 혼자 풀어서 기분 좋음ㅋㅋㅋ
- 간결한 코드 예시 : https://ooyoung.tistory.com/62
'Algorithm_study' 카테고리의 다른 글
#33. Algorithm23_python) 알파벳 찾기_백준 10809 (0) | 2022.06.03 |
---|---|
#32. Algorithm22_python) 숫자의 합_백준 11720 (0) | 2022.06.02 |
#29. Algorithm20_python) 최소, 최대_백준 10818 (0) | 2022.05.31 |
#26. Algorithm19_python) X보다 작은 수_백준 10871 (0) | 2022.05.30 |
#24. Algorithm18_python) A+B_3_백준 10950 (0) | 2022.05.29 |
Comments