본문 바로가기
BOJ/[BOJ] Python

백준 1546번 풀이

by Lv. 35 라이츄 2022. 8. 18.

문제

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

 

1546번: 평균

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보

www.acmicpc.net

성적별 최댓값을 바탕으로 재계산해서 평균 올리기. 재계산 공식은 원점수/최댓값*100이다. 이거 뭐 나누는 거 아니고 그냥 순서대로 하면 된다. 근데 이거 이렇게 조작해도 금방 뽀록나던데

 

풀이

import sys
subject=int(sys.stdin.readline()) # 과목 수
score=list(map(int,sys.stdin.readline().split(" "))) # 과목 성적
print(subject, score)

첫 줄에는 과목 수, 둘째 줄에는 과목별 점수가 들어간다. 과목 수는 이따 평균 구할 때 쓸 예정.

max(score)

최댓값은 이걸로 찾으면 된다.

import sys
subject=int(sys.stdin.readline()) # 과목 수
score=list(map(int,sys.stdin.readline().split(" "))) # 과목 성적
for i in range(len(score)):
    score.append(score[i]/max(score)*100)
print(score)

이건 줄 알고 해봤더니 리스트 길이가 뭔가 이상하더라고… 생각해보니 append는 바꾸는 게 아니라 추가하는거였다.

import sys
subject=int(sys.stdin.readline()) # 과목 수
score=list(map(int,sys.stdin.readline().split(" "))) # 과목 성적
for i in range(subject):
    score[i]=(score[i]/max(score)*100)
print(score)

이거는 또 계산한 값이 이상한것이었다. 반복문을 돌 때 리스트의 요소가 바뀌면서, 최댓값도 같이 바뀌어버린 것.

import sys
subject=int(sys.stdin.readline()) # 과목 수
score=list(map(int,sys.stdin.readline().split(" "))) # 과목 성적
max_score=max(score) # 최댓값
for i in range(subject):
    score[i]=(score[i]/max_score*100)
print(score)

그래서 for문 돌기 전에 최댓값 변수 할당해서 고정값 줬다.

import sys
subject=int(sys.stdin.readline()) # 과목 수
score=list(map(int,sys.stdin.readline().split(" "))) # 과목 성적
max_score=max(score) # 최댓값
for i in range(subject):
    score[i]=(score[i]/max_score*100)
print(sum(score)/subject)

mean() 이런거 없나…

'BOJ > [BOJ] Python' 카테고리의 다른 글

백준 4344번 풀이  (0) 2022.08.18
백준 8958번 풀이  (0) 2022.08.18
백준 3052번 풀이  (0) 2022.08.18
백준 2577번 풀이  (0) 2022.08.18
백준 2438, 2439번 문제 풀이  (0) 2022.08.18

최근댓글

최근글

skin by © 2024 ttutta