Baekjoon

Baekjoon 1546번 평균

ppwag 2020. 7. 15. 22:43

문제

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

댓글