코딩테스트/기초

백준 4344 평균은 넘겠지 - python

math_tbro 2022. 1. 1. 18:09

 

출처 : https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

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

www.acmicpc.net

풀이 출처 : 

https://ooyoung.tistory.com/62

 

백준 4344 [파이썬 알고리즘] : 평균은 넘겠지

[Python] 백준 알고리즘 온라인 저지 4344번 : 평균은 넘겠지 Python3 코드 n = int(input()) for _ in range(n): nums = list(map(int, input().split())) avg = sum(nums[1:])/nums[0] # 평균을 구함 (nums[..

ooyoung.tistory.com

 

풀이 : 

 

풀이를 두 개 준비했다. 과정이 비슷하지만 나 같은 경우는 출력 받은 값에서 필요한 값을 다시 리스트로 만들어서 그 숫자를 세었고

위 블로그의 풀이는 cnt = 0 으로 지정한다음 입력값이 클 때마다 cnt를 1 씩 늘려가며 찾고자하는 수를 세었다.

 

자세히 들어가보겠다.

 

1. 입출력은 생략하겠다.

 

2. 나 & 블로그 : 

입출력의 구조가 [개수, 계산해야할 값] 이렇게 되있다. 우리는 이를 나눠줘야 할 필요가 있다. 그래서 개수는 a[0]으로 가져오고 계산해야할 값은 a[1:] 으로 가져왔다. 이렇게 우리는 개수와 계산해야할 값을 나눴다. 그리고 계산해야할 값의 평균을 구해준다.

 

3. 나 : 

새로운 빈 리스트 e = [] 를 만들었다. 그 다음 계산해야 할 값 c 를 지정해서 c에 있는 값중 평균보다 큰 값을 e에 넣어주기로 했다.

이를 위해서 if 를 사용했으며 결과는 평균보다 큰 값이 e에 저장될것이다. 

우리는 비율을구해야하므로 len(e)를 이용하면 비율의 분자를 구할 수 있다. 여기서 개수 b를 나눠준다음  * 100을 하면 끝이다.

 

4. 블로그 :

cnt = 0 을 지정해준다. 

그 다음 입력 값 > avg 이면 cnt가 1 씩 증가한다. 그렇게 되면 비율의 분자는 cnt가 될것이고 여기에 입력 개수를 나눠주면 비율이 나온다.

이게 더 간단하고 많이 본 풀이이므로 이 방법을 더 활용해야하고 꼭 숙지해야할 듯하다.

 

5. 출력

이게 출력을 하는데 애를 먹었는데...

반올림을 하면 된다해서 round(ans,3)을 하면 될줄 알았다. 근데 40.000 같은 값은 40.0 으로 나오고 말았다. 그래서 소수점을 출력하는방법을 찾아야 했고. 

방법은 다음 처럼 print(f'{ans:3f}%')을 써주면 된다.

 

 

 

 

 

'코딩테스트 > 기초' 카테고리의 다른 글

백준 4673 셀프 넘버 - python  (0) 2022.01.01
백준 15596 정수 N개의 합  (0) 2022.01.01
백준 8958 OX퀴즈 - python  (0) 2022.01.01
백준 1546 평균 - python  (0) 2022.01.01
백준 3052 나머지 - python  (0) 2021.12.31