문제
세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.
예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.
세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다.
출력
첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10^-2 이하이면 정답이다.
코드
N = int(input())
scores = list(map(int, input().split()))
output = 0
for i in range(N):
output += scores[i]/max(scores)*100
output = output/N
print(output)
관련 개념 정리
input
파이썬에서는 값을 사용자로부터 입력받을때 input함수를 사용합니다.
입력받은 값을 넣을 변수 이름 = input("띄울 메세지")
단! input함수는 입력받은 모든 내용을 문자열로 인식합니다. 따라서 입력받은 내용을 정수로 변환하려면
d = int(input())
와 같은 형태로 작성하거나, 나중에 변수를 사용할때
print(int(d)+2)
와 같이 int()로 감싸서 작성할 수 있습니다.
map
map함수는 입력받은 자료형의 각 요소를 함수가 적용된 값으로 변형 시켜주는 함수입니다.
map(함수, 반복 가능한 자료형)
위와 같은 형태로 사용 가능합니다.
예시)
def dddd(x):
return x+3
print(list(map(dddd,[2,5,1,8])))
# [5, 8, 4, 11]
list
list함수는 반복 가능한 자료형을 받아 리스트로 만들어 주는 함수입니다.
list(반복 가능한 자료형)
위와 같은 형태로 사용 가능합니다.
print(list("배고파"))
#['배', '고', '파']
print(list((1,6,3)))
#[1, 6, 3]
print(list([3,5,2]))
#[3, 5, 2]
문자열을 입력 받은 경우에는 한글자씩 쪼개서 리스트를 만듭니다.
숫자로 된 리스트를 만들기 위해서는 ,(쉼표) 로 구분해서 ()괄호 안에 입력하면 됩니다.
list에 list를 입력한 경우에는 아무런 변화 없이 입력한 list를 그대로 retrun합니다.
split
또한 값을 입력받을 때, 한 번에 여러 값을 입력받을 수 있습니다.
그때 사용할 수 있는 함수가 바로 split 함수입니다.
split할 변수 이름.split('구분자')
만약 split()일 경우, space, tap, enter와 같은 공백을 기준으로 문자열을 나눕니다.
for문
특정 코드들을 원하는 횟수 만큼 반복 시킬 때 사용하는것이 for문입니다.
for문의 기본 구조는 아래와 같습니다.
for i in 리스트(or 문자열, 튜플):
실행할 코드
리스트,문자열,튜플의 첫 글자나 요소부터 마지막 글자나 요소까지 차례대로 변수에 대입됩니다.
for문의 범위와 변수값을 숫자로 정하고 싶을때는 아래와 같이 range함수를 사용합니다.
for i in range(시작숫자,종료숫자,step):
실행할 코드
step은 얼만큼씩 변수를 증가 시킬지 정하는 것 입니다.
시작숫자와 step은 생략되어도 됩니다.
i를 사용하지 않고 코드를 반복만 하고 싶은 경우, i자리를 _(언더바)로 대체해서 사용합니다.
산술 연산자
x+y | x 더하기 y |
x-y | x 빼기 y |
x*y | x 곱하기 y |
x/y | x 나누기 y |
x//y | x 나누기 y의 몫 |
x%y | x 나누기 y의 나머지 |
x**y | x의 y제곱 |
min, max
min과 max는 각각 최솟값과 최댓값을 리턴하는 함수로, 아래와 같이 사용합니다.
min(반복 가능한 자료형) #최솟값 리턴
max(반복 가능한 자료형) #최댓값 리턴
'코딩공부 > 알고리즘' 카테고리의 다른 글
[파이썬 풀이] 백준 4344.평균은 넘겠지 (0) | 2021.11.23 |
---|---|
[파이썬 풀이] 백준 8958.OX퀴즈 (0) | 2021.11.23 |
[파이썬 풀이] 백준 3052.나머지 (0) | 2021.11.23 |
[파이썬 풀이] 백준 2577.숫자의 개수 (0) | 2021.11.11 |
[파이썬 풀이] 백준 2562.최댓값 (0) | 2021.11.11 |