336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
1. 산술평균 ; N개 수를 N으로 나눈 값
모든 수를 더하고 n으로 나누고 round 를 쓰면 된다. 이때 나누는 n에 float형을 취해야
int / float = float 형이 되기 때문에
int / int 형이라 float형이 될 수 없었다.
2. 중앙값 ; N개 수들이 오름차순일 때, 그 중앙에 위치하는 값
이건 그냥 중앙에 위치한 값
3. 최빈값 ; N개 수들 중 가장 많이 나타나는 값
최빈값은 counting sort 계수정렬사용해서 구했다.
4. 범위 ; N개 수들중 최대값 최소값의 차이
이거는 최소 최대...
아................ python 2.x 로 코드를 작성했는데..
이거 미쳤다 16번 틀렸다 근데 진자 어디서 틀린지 모르고............
시간초과는 sys.stdin.readline 으로 했는데
저기 위에서 도대체 뭐가 문젠지
37%? 36%? 에서 넘어가질 않는거다...
결론은 round 함수를 잘못쓴거였는데
코드도 더럽게짰는데....
round함수때문에 계속 틀리더라...
round(float 형 변수)
혹은
round(숫자)
를 넣으면 바로 출력이 되는데
문제가
round(sum(L) / num_of_number)
num_of_number 이게 숫자들의 수가 입력으로 정수개수가 주어진 건데
저걸 저리 그대로 쓰면 int 형이기 때문에 인트형 결과가 나와버려서
왜 저거 생각못하고 계속해서 틀렸습니다! ...........를 받았는지 진짜 바보같다.
다른게 틀린 줄 알고 계속 바꿔서 막 이상하게 작성되어 있긴하다..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | import sys number = [n for n in range(-4000,4000+1)] counting_sort = [0 for n in range(-4000,4000+1)] tc = input() s = 0 def fn_middle(): count = 0 cond = tc if cond%2 == 0: cond /= 2 else : cond = int(cond/2) + 1 for step in range(len(counting_sort)): count += counting_sort[step] if(count >= cond): return step-4000 def fn_mode(): lst = [] max_counting = -1 for step in range(len(counting_sort)): if(max_counting < counting_sort[step]): max_counting = counting_sort[step] lst = [step-4000] elif(max_counting == counting_sort[step] and max_counting != 0): lst.append(step-4000) return lst def fn_sum(): ret = 0 for i in range(len(counting_sort)): ret += counting_sort[i]*number[i] return ret def max_range(): for i in range(len(counting_sort)-1,0-1,-1): if(counting_sort[i]!=0): return i-4000 def min_range(): for i in range(len(counting_sort)): if(counting_sort[i]!=0): return i-4000 min_range = 9999 max_range = -9999 seq = [] for step in range(tc): n = int(sys.stdin.readline()) counting_sort[n+4000] += 1 min_range = min(min_range, n) max_range = max(max_range, n) seq.append(n) print int(round(fn_sum()/float(tc))) seq.sort()print seq[int(tc/2)] L = fn_mode() if len(L) > 1 : print L[1] elif len(L) == 1 : print L[0] print max_range-min_range | cs |