문제
https://www.acmicpc.net/problem/2587
숫자 다섯개가 들어오는데 이제 평균이랑 중앙값을 출력해야 한다.
풀이
일단 이거는 예전에 풀었던 엑셀은 장식이 아닙니다 휴먼 문제(번호는 까먹었는데 풀면서 이럴거면 엑셀 쓰지 싶었음)보다는 쉽다. 일단 입력이 딱 다섯개인데 되게 정직하게 한줄씩 받는 시점에서 쉽지.
import sys
number_list = []
for i in range(5):
number = int(sys.stdin.readline())
number_list.append(number)
이렇게만 하면 배열에 숫자까지 깔끔하게 패킹이 되는데... 이제 그럼 평균을 어떻게 구하져? 저건 산술평균, 그니까 엑셀에서 average() 치면 계산해주는 그 평균이 맞다. 그럼 파이썬에도 그런게 있나요? ㄴㄴ 없음.
average = sum(number_list) // 5
print(average)
그니까 걍 통으로 더해서 5로 나누면 되는데... 잘 보니까 슬래시가 두개네??? 아닛 나누기는 슬래시 하나자나여! 에잇 난 하나쓸거임 하면
???: YOU JUST ACTIVATED MY TRAP CARD (브금은 셀프)
나누기는 /가 맞다. 근데 문제를 잘 보면 출력값(평균/중앙값)이 다 '자연수'라고 되어있다. 그게 근데 슬래시 두개 쓰는 이유가 되냐고? 그럼 슬래시를 하나 쓰면 어떻게 되는지 보면 되지.
average = sum(number_list) / 5
위에 다섯개는 입력값이고 저 밑에 32(32.0)가 평균인데 문제가 하나 있다. 저거 분명 나눠떨어지는데 .0을 달고 나와요... 저거 int 아니고 float여... 그러면 int로 변환하든가 아예 소수점 떼버리고 몫만 받게 슬래시 두번 그어야된다. 사실 나도 테스트하면서 알았음... ㅋㅋㅋㅋㅋㅋ
중앙값은 저거보다 더 간단해서 연산이고 자시고 필요 없다. 그냥 리스트정렬하고 가운데 값 뽑으면 되니까
print(number_list[2])
정렬한 리스트에서 인덱싱해서 가운데 값 뽑자. 여기서 중요한건 컴퓨터는 0부터 세기 때문에 길이가 5인 배열에서 가운데는 2번이 된다는 것. (배열 길이가 5로 고정되어있다)
import sys
number_list = []
for i in range(5):
number = int(sys.stdin.readline())
number_list.append(number)
number_list.sort()
average = sum(number_list) // 5
print(average)
print(number_list[2])
그래서 이거 내면 된다.
아, 이차원 배열 파트? 그거 일단 문제 풀려고 어제 봤는데 뇌 블루스크린 뜸...
'BOJ > [BOJ] Python' 카테고리의 다른 글
백준 25314번 풀이 (0) | 2023.05.28 |
---|---|
백준 11382번 풀이 (0) | 2023.05.28 |
백준 2738번 풀이 (0) | 2022.11.14 |
백준 5597번 풀이 (0) | 2022.11.13 |
백준 10807번 풀이 (0) | 2022.11.13 |