티스토리 뷰

728x90
반응형

 

https://programmers.co.kr/learn/courses/30/lessons/12944

 

코딩테스트 연습 - 평균 구하기

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr

programmers.co.kr

 

 


 

 

<나의 풀이>

# 1번 풀이
def solution(arr):
    answer = sum(i for i in arr) / len(arr)
    return answer
    
# 2번 풀이
def solution(arr):
    answer = 0
    cnt = 0
    for i in arr :
        answer += i
        cnt += 1
    return answer / cnt

 

1번 풀이는 내장 함수를 이용해서 풀어봤고,

2번 풀이는 내장 함수를 사용하지 않고 풀어봤다.

가끔 코데에서 내장 함수 사용을 금지하는 경우가 있다고 해서

쉬운 문제여도 되도록 내장 함수를 사용 안 하고도 풀어봐야겠다.

다른 사람의 풀이를 보니 sum함수 안에 for를 안 해도 됐더라..! 

역시 문제는 많이 풀어봐야하는 것 같다👊🏻

 

<다른 사람의 풀이>

def average(list):
    if len(list) == 0:
        return 0

    return sum(list) / len(list)
    

# <배운점>
# => sum함수는 for를 안써도 list 요소를 다 더해준다는 점

 

from functools import reduce

def average(list):
    return reduce(lambda x, y : x + y, list) / len(list)
    
       
# <배운점>
# => reduce와 람다 사용법을 배울 수 있었음


'''
< 더 알아보기 >
----------------------------------------------------------------------- 

# reduce() : 여러 개의 데이터를 대상으로 주로 누적 집계를 내기 위해서 사용
=> from functools import reduce 필수
=> reduce(집계함수,순회 가능한 데이터[, 초기값])

----------------------------------------------------------------------- 

# lambda 형식
=> 간단한 표현식을 함수처럼 다룰 수 있게 해주는 표현
=> 익명함수이기 때문에 한 번 쓰이고 다음 줄로 넘어가면 힙메모리영역에서 증발함
=> lambda 인자 : 형식

----------------------------------------------------------------------- 

# 코드 해석
lst = [5,3,4] 
return reduce(lambda x, y : x + y, list) / len(list)
=> lst에서 5와 3을 꺼내 더해줌
=> 그 결과에 4를 꺼내 더해줌
=> lst의 크기만큼 반복
=> 모든 요소를 다 더 한 후에 lst의 크기만큼 나눠줌
=> 그 결과를 반환

----------------------------------------------------------------------- 
'''

 

import statistics

def average(list):
    return statistics.mean(list)


# <배운점>
# => statistice 모듈에 대해 배울 수 있었음


'''
< 더 알아보기 >
----------------------------------------------------------------------- 

# statistics : 수학 통계와 관련된 함수가 들어 있는 모듈

----------------------------------------------------------------------- 

# mean(data) : 데이터의 산술평균을 구해주는 함수

----------------------------------------------------------------------- 

# 코드 해석
lst = [5,3,4] 
return statistics.mean(lst)
=> statistics 모듈의 mean 함수를 가져옴
=> lst의 산술평균을 구해서 반환함

----------------------------------------------------------------------- 
'''
728x90
반응형
댓글