본문 바로가기

코딩테스트

프로그래머스 0단계 배열의평균값

우선 문제를 알아보자

문제를 보고 처음든 생각은 sum이라는 변수랑 for문을 써서 간단하게 풀면 된다고 생각했다.

처음풀이:

def solution(numbers):
    sum = 0
    numbers = []
    for i in ragne(len.numbers):
        sum += numbers[i]
    sum = answer
    return answer

처음에는 이런식으로 풀었더니
AttributeError: 'builtin_function_or_method' object has no attribute 'numbers'

라는 에러가 생겼다.속성 에러? 뭔지 몰라 구글링해보니 numbers라는 변수가 존재하지않는다고 되었다.

C언어에서는 numbers = []는 빈 배열을 만든다고 생각한다.

하지만 위의 코드에서는 어디에서도 배열을 선언하지않았는데 자동으로 number라는 배열이 선언되었다.

이것에 대한 궁금증으로 찾아보니,파이썬의 동적 타입 시스템이기때문에 자동으로 리스트를 선언해준다고 한다.

그래서 코드를 다시짜보면

def solution(numbers):
    sum = 0
    for i in numbers:
        sum += i
    answer = sum/len(numbers)
    return answer

sum이라는 변수에 0을 선언하고, numbers까지 for문을 반복하고,sum 이라는 변수에 i를 더해가며 전체의 합을구한다

그리고 answer라는 변수에 sum/numbers의 길이를 나누어주면 평균이 나온다.