문제
https://www.acmicpc.net/problem/1546
걸린 시간
00 : 25 : 30
풀이
Python3
if __name__ == "__main__":
# 점수중에 고른 최대값 M
# 모든 점수를 : 점수 / M * 100
# ex) M : 70, 50 / 70 * 100 = 71.43
# N : 시험 본 과목의 개수
N = int(input())
# 성적이 한줄로 주어짐
score = []
score = input().split()
# list str to int
score = list(map(int, score))
# 새로운 평균의 연산
M = max(score)
for i in range(0, len(score)):
score[i] = score[i] / M * 100
aver = sum(score) / N
# 출력
print(aver)
input 와 split 함수를 같이 사용하면 한줄에 여러개의 값을 입력받을 수 있다. split 함수에 아무런 옵션도 주지 않으면 공백을 기준으로 분리한다.
str 타입인 list 의 요소를 int 로 변경하기 위해 여러개의 데이터를 한번에 다른 형태로 변경시켜주는 파이썬 내장함수 map 을 사용한다. map 함수는 버전에 따라 차이가 있는데 Python 3.x 에선 map 타입으로 반환되어 타입의 변환이 필요한 반면 Python 2.x 에서는 list 로 반환된다.
아래와 같은 방법으로 타입을 바꾸어 줄 수도 있다고 한다.
# list str to int
score = [int (i) for i in score]
map, max 함수 모두 복잡도가 n 으로 코드의 시간복잡도는 O(n) 이다.
출처
'Baekjoon' 카테고리의 다른 글
Baekjoon 18111번 마인크래프트 (0) | 2020.07.18 |
---|---|
Baekjoon 2805번 나무 자르기 (0) | 2020.07.17 |
Baekjoon 1654번 랜선 자르기 (0) | 2020.07.16 |
Baekjoon 4153번 직각삼각형 (0) | 2020.07.16 |
Baekjoon 2750번 수 정렬하기 (0) | 2020.07.15 |
댓글