class 2

 

- 실패 코드

def avg(arr, n):
    sum=0
    for i in arr:
        sum+=i
    return round(sum/n)

def mid(arr, n):
    arr.sort()
    return arr[n//2]

def max(arr, n):
    li=dict()
    max=0
    cnt=0
    arr.sort()
    for i in range(n):
        if arr[i] not in li:
            li[arr[i]]=1
        else:
            for j in li:
                if j==arr[i]:
                    li[j]+=1
    for i in li:
        if max<li[i]:
            max=li[i]
            max_key=i
    for i in li:
        if li[max_key]==li[i]:
            cnt+=1
    if cnt>1:
        return arr[1]
    else : return max_key

def numrange(arr, n):
    arr.sort()
    cha=arr[-1]-arr[0]
    return cha

n=int(input())
number=[]
for _ in range(n):
    number.append(int(input()))

print(avg(number,n))
print(mid(number,n))
print(max(number,n))
print(numrange(number,n))

실패 이유 : 시간 초과 

 

- 성공 코드

import sys
from collections import Counter

def avg(arr, n):
    return (round(sum(arr)/n))

def mid(arr, n):
    return arr[n//2]

def max(arr, n):
    max = Counter(arr).most_common()
    if len(max) > 1 and max[0][1]==max[1][1]:
        return max[1][0]
    else:
        return max[0][0]

def numrange(arr, n):
    cha=arr[-1]-arr[0]
    return cha

n=int(input())
number=[]
for _ in range(n):
    number.append(int(sys.stdin.readline()))
number.sort()

print(avg(number,n))
print(mid(number,n))
print(max(number,n))
print(numrange(number,n))

<코드 설명>

main : 입력받을 숫자의 개수를 n으로 입력받고 number이라는 list에 n개의 수를 입력받아 추가해주었다. 그리고 이를 sort해주었다.

 

산술 평균 -> avg 함수 : arr의 합을 총 개수인 n으로 나눠준다.

중앙값 -> mid 함수 : arr가 이미 sort 되어 있으므로 n을 2로 나눈 수(중간 index) 번째에 있는 arr 값을 반환한다.

최빈값 -> max 함수 : counter를 사용하여 arr의 최빈값을 구하여 max에 저장해주었다. 최빈값이 2개 이상일때 max[1][0] (두번째로 작은 값)을 가져오고, 그렇지 않으면 max[0][0] (빈도수 높은 값)을 가져온다.

범위 -> numrange 함수 : arr의 마지막 원소와 첫번째 함수의 차이를 반환한다.

 

<실행 결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 1235 학생 번호  (0) 2022.07.03
[BOJ] 1316 그룹 단어 체커  (0) 2022.06.26
[BOJ] 1978 소수 찾기  (0) 2022.06.25
[BOJ] 1427 소트인사이드  (0) 2022.06.19
[BOJ] 2869 달팽이는 올라가고 싶다  (0) 2022.06.19

+ Recent posts