티스토리 뷰

이번 포스팅은 백준 알고리즘 사이트의 1546번 평균 문제를 Python 언어로 코딩해보도록 하겠습니다. 아래 url로 접속하시면 문제를 볼 수 있습니다.

 

https://www.acmicpc.net/problem/1546

 

이번 포스팅은 지난 포스팅과 같은 단계로 if문 사용해보기 단계입니다.

 

 

이 문제의 경우 입력 받은 과목 수 N과 N개만큼의 점수를 입력 받고, 가장 높은 점수 M을 찾아 모든 점수를 M*100으로 나누어 이 문제에서 원하는 평균을 출력하는 문제입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
num = int(input())
max = 0
avg = 0
inArr = list(map(float, input().split()))
for i in range(num):
        if max < inArr[i]:
                max = inArr[i]
 
for i in range(num):
        inArr[i] = inArr[i]/max*100.0
        avg += inArr[i]
 
print(round(avg/num, 2))

 

먼저 입력받을 과목수에 해당하는 num값을 int형으로 입력 받아주고, 최대값을 저장할 max 변수와 평균을 구하기 위한 avg 변수를 선언하고 0으로 초기화 시켜줍니다.

 

각 과목에 해당하는 점수를 입력받아야 하기에 inArr라는 list를 지정해 해당 list값을 float값으로 설정하고, 입력 받은 수를 나누어 저장하기 위해 list(map(float, input.split())) 코드를 작성하여 줍니다.

 

for문을 이용해 과목의 수만큼 범위를 지정해 반복문을 실행하여 주는데, inArr의 각 값과 max를 비교해 inArr에 있는 값이 max값보다 크면 max에 저장해주는 코드를 작성해줍니다.

 

이후 다시 for문을 사용해 inArr값을 변경해주는데 원래 inArr값에 최대값x100.0을 나누어 새로운 점수를 inArr에 넣어주면 됩니다. 새로운 점수에 해당하는 평균을 구하기 위해 모든 inArr값을 avg에 더해서 넣어주시면 됩니다.

 

마지막으로 변화시킨 점수에 대한 평균을 구하기 위해 변화한 모든 점수가 더해져 있는 변수 avg를 과목수(num)만큼 나눠주면 됩니다. 문제에서는 소수점 이하 둘째자리의 값까지 출력시켰기에 round라는 함수를 사용해 반올림을 시켜주었습니다.

 

python의 round함수는 반올림을 위한 함수로 round(반올림 할 값, 반올림 위치 지정) 형식으로 사용해주시면 됩니다.

 

 

다음 포스팅에서는 다음 단계의 문제를 풀어보도록 하겠습니다.

 

다음 포스팅에서 봐요 :))

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함