BOJ2108 - 통계학 (python3)

Ok Haeeun·2023년 2월 22일
0

Python3로 algorithm문풀

목록 보기
19/53

시간초과 안하려고 저번에 count 정렬했던 방식을 이용하려고 하니까 너무 어려웠다ㅠ
간간이 참고한 천재같은 풀이..

천재이신가요..?

내가 보기에 내 풀이는 넘나 더러워보인닷..

그래도 풀었으니까...기특해 내 자신~

그리고 배운 것이 엄청 많았다..!!!

새로 알게 된 것

  • list_A[::-1] 는 list_A를 거꾸로 정렬한 것
  • for 문에서 인덱스와 값을 함께 가져올 수 있는데, 그때는 list를 enumerate내장함수로 감싸주어야 한다.
  • 반올림은 내장함수 round()
  • list 자료형은 index라는 메서드를 가지고 있다. 이거 대박임..검색하고자 하는 value값을 가진 index를 반환하는 메서드로, 해당 value값을 가진 첫번째 인덱스를 반환한다.
  • not 0이라고 해서, 0이 아닌 값은 다 True인 것이 아니다! not 0은 1을 가리키는 것일 뿐. (not 0) == (0이 아닌 수)는 True가 아니다.
import sys

n = int(sys.stdin.readline().rstrip('\n'))
number = [0]*8001
num_list = []
mean, center, max_idx, min_idx = 0,-1,0,0
check_num = n//2
for _ in range(n):
    number[int(sys.stdin.readline())+4000] += 1
for i in range(len(number)):
    mean += (i-4000)*number[i]
    if number[i] != 0:
        check_num -= number[i]
        if center==-1 and check_num < 0:
            center = i-4000
print(round(mean/n))
print(center)
max_num = max(number)
if number.index(max_num)+number[::-1].index(max_num) != 8000:
    print(number[number.index(max_num)+1:].index(max_num)+number.index(max_num)-3999)
else:
    print(number.index(max_num)-4000)
for idx,val in enumerate(number[::-1]):
    if val != 0:
        max_idx = idx
        break
for idx,val in enumerate(number):
    if val != 0:
        min_idx = idx
        break
print(8000-max_idx-min_idx)
profile
tistory에 이어서 기록합니다 👉 https://i-m-okay.tistory.com/

0개의 댓글