hyei-devlog

[Python/파이썬] 백준 10039 평균 점수 본문

Online Judge/Baekjoon

[Python/파이썬] 백준 10039 평균 점수

winter126 2025. 1. 27. 01:35

📍 문제

https://www.acmicpc.net/problem/10039

 

📍 전체 코드

print(int(sum(max(40, int(input())) for _ in range(5)) / 5))

 

 

📍 문제 풀이

  • max(40, int(input())) for _ in range(5) 5개의 정수를 입력받는다. 이때, 입력값이 40보다 작으면 40을 반환하고, 크거나 같으면 입력값을 그대로 반환한다. 
    • 문제에서 40점 미만인 학생들은 보충 수업을 통해 항상 40점을 받게 된다.
  • sum() 입력받은 5개의 정수들을 더하고, 5로 나누어 평균을 계산한다. int형으로 변환하여 소수점을 버린다.

 

📍 문제 해결을 위한 고민

이 문제는 for문 안에서 if문을 사용하면 아주 쉽게 풀 수 있지만, 코드를 최대한 압축해서 작성하는 연습을 하고 싶었다.
입력값이 40보다 작은 경우 40으로 처리하는 과정을 어떻게 구현할지 고민하다가, max()를 사용하는 방법을 떠올리게 되었다. 
max()를 활용하면 조건문 없이도 문제에서 요구한 조건을 간단히 처리할 수 있었다.

 

⭐️ 중요 포인트 & 개념 정리

max()는 두 값 중 더 큰 값을 반환하는 함수로, 조건문 없이 값을 비교하는 데 유용하다.
뿐만 아니라, 이터러블(리스트, 튜플 등)에서 최대값을 찾거나, key 매개변수를 통해 커스텀 기준으로 최대값을 구할 수도 있다.
 


 
1. 일반적인 동작
max(a, b)처럼 두 값을 비교하여 더 큰 값을 반환한다.
이 문제에서는 max(40, input값)으로 입력값이 40보다 작으면 40을 선택하도록 처리했다.
 
2. 여러 값 비교
max()는 하나의 리스트나 튜플 같은 이터러블(iterable)을 입력받아 그중 최대값을 반환할 수도 있다.

print(max([10, 20, 30, 5])) # 결과: 30
print(max("hello")) # 결과: 'o' (문자열도 알파벳 순으로 비교)

 
3. key 인자 활용
max()는 단순 비교뿐만 아니라, key 매개변수를 통해 특정 기준을 바탕으로 최대값을 구할 수도 있다.
예를 들어, 문자열의 길이를 기준으로 가장 긴 단어를 찾으려면:

words = ["apple", "banana", "kiwi"] 
print(max(words, key=len)) # 결과: 'banana'