코딩 테스트를 준비하는 많은 개발자들에게 평균 구하기 문제는 단순하면서도 중요한 기초 문제로 자리 잡고 있습니다.
이 문제는 데이터 집합에서 평균을 계산하는 과정에서 프로그래밍의 기초적인 개념을 다질 수 있는 좋은 기회입니다.
문제 설명
주어진 정수 리스트에서 평균을 구하시오.
리스트는 1 이상 100 이하의 정수로 이루어져 있으며, 리스트의 길이는 1 이상 1000 이하입니다.
평균은 소수점 이하 첫째 자리까지 반올림하여 출력해야 합니다.
입력
- 첫 번째 줄에 정수 n (1 ≤ n ≤ 1000)이 주어집니다. n은 리스트의 길이입니다.
- 두 번째 줄에는 n개의 정수가 주어집니다. 각 정수는 1 이상 100 이하입니다.
출력
리스트의 평균을 소수점 이하 첫째 자리까지 반올림하여 출력합니다.
예제
입력:
5
10 20 30 40 50
출력:
30.0
문제 풀이 과정
1. 문제 분석
이 문제를 해결하기 위해서는 다음과 같은 단계를 따르면 됩니다:
- 리스트에서 정수를 입력 받는다.
- 리스트의 총 합을 계산한다.
- 리스트의 길이(n)로 총 합을 나누어 평균을 계산한다.
- 계산한 평균을 소수점 이하 첫째 자리까지 반올림한다.
2. 알고리즘 설계
위의 단계를 바탕으로 알고리즘을 설계해보겠습니다.
1. 사용자로부터 n을 입력 받습니다.
2. n개의 정수를 입력 받아 리스트에 저장합니다.
3. 리스트의 합을 구합니다.
4. 합을 n으로 나누어 평균을 계산합니다.
5. 평균을 내림차순으로 출력합니다.
3. 파이썬 코드 구현
이제 위의 알고리즘을 파이썬 코드로 구현해 보겠습니다.
코드는 다음과 같습니다:
def calculate_average():
# 사용자로부터 길이를 입력 받음
n = int(input("리스트의 길이를 입력하세요: "))
# 리스트 생성
numbers = list(map(int, input("정수를 입력하세요 (공백으로 구분): ").split()))
# 유효성 검사
if len(numbers) != n:
print("입력한 숫자의 개수가 리스트의 길이와 일치하지 않습니다.")
return
# 평균 계산
total = sum(numbers)
average = total / n
# 소수점 이하 첫번째 자리까지 반올림
average_rounded = round(average, 1)
# 결과 출력
print(f"리스트의 평균: {average_rounded}")
# 함수 호출
calculate_average()
4. 코드 설명
1. 입력 받기: `n`을 입력 받고, 이후 `n`개의 정수를 입력 받아 리스트 `numbers`에 저장합니다.
2. 유효성 검사: 입력된 숫자의 개수가 `n`과 일치하는지 확인합니다.
일치하지 않으면 오류 메시지를 출력하고 함수를 종료합니다.
3. 합계와 평균 계산: 리스트의 합계를 구하고, 평균을 계산합니다.
4. 반올림: `round()` 함수를 사용하여 평균을 소수점 이하 첫째 자리까지 반올림합니다.
5. 출력: 마지막으로 계산된 평균을 출력합니다.
5. 예외 처리 및 추가 고려사항
– 입력 값이 조건을 만족하지 않을 경우 예외를 처리할 수 있어야 합니다.
예를 들어, 리스트의 길이와 입력된 숫자 개수가 다를 경우 오류 메시지를 출력하도록 설계되었습니다.
– 또한, `input()` 함수는 문자열로 입력을 받기 때문에, 이를 정수로 변환할 필요가 있습니다.
여기서는 `map(int, …)` 함수를 사용하여 리스트의 모든 요소를 정수형으로 변환하는 방법을 사용했습니다.
6. 추가 문제: 평균 계산 함수 개선하기
위의 문제를 해결한 후, 몇 가지 개선사항을 추가할 수 있습니다.
예를 들어, 함수가 입력을 받을 때 사용자에게 안내 메시지를 줄 수 있도록 개선할 수 있습니다.
사용자에 맞는 피드백을 주면 레벨 높은 사용자 경험을 제공하게 됩니다.
결론
이번 포스팅에서는 리스트에서 평균을 구하는 문제를 다루었습니다.
이와 같은 기초 문제를 통해 파이썬 기본 문법 및 데이터 처리 방법에 대해 이해할 수 있었습니다.
앞으로 더 복잡한 문제를 다루기 전에 이러한 기본적인 문제 해결 능력을 기르는 것은 필수적입니다.
파이썬을 통해 알고리즘과 데이터 처리 능력을 한 단계씩 발전시켜 나가시길 바랍니다.
감사합니다!