내코드
def solution(score):
averages = [(sum(scores) / 2) for scores in score]
sorted_avg = sorted(averages, reverse=True)
ranks = [sorted_avg.index(avg) + 1 for avg in averages]
return ranks
코드설명
- 평균 점수 계산: 각 학생의 영어 점수와 수학 점수를 합산한 뒤 2로 나눠 평균 점수를 구합니다.
- 내림차순 정렬: 구한 평균 점수를 내림차순으로 정렬합니다.
- 등수 계산: 각 학생의 평균 점수를 기준으로 정렬된 리스트에서의 위치를 찾고, 이를 1부터 시작하는 등수로 변환하여 결과 리스트에 담습니다.
특징
- 평균 점수를 기준으로 순위를 매깁니다.
- **sorted**를 활용해 내림차순 정렬 후, **index**를 사용해 순위를 계산했습니다.
- 단순히 평균 점수를 기준으로 정렬하는 로직이라 명확합니다.
다른 코드
def solution(score):
a = sorted([sum(i) for i in score], reverse=True)
return [a.index(sum(i)) + 1 for i in score]
코드설명
- 총점 계산: 각 학생의 영어 점수와 수학 점수를 합산하여 총점을 계산합니다.
- 내림차순 정렬: 총점을 내림차순으로 정렬합니다.
- 등수 계산: 각 학생의 총점을 기준으로 정렬된 리스트에서의 위치를 찾아 등수를 계산합니다.
특징
- 평균 대신 총점을 기준으로 순위를 매깁니다.
- 간결한 표현으로 작성되어 있어 코드가 짧고 직관적입니다.
- 점수를 기준으로 정렬한 뒤, **index**를 사용해 순위를 찾습니다.
두 코드 비교
- 내 코드는 평균 점수를 계산해 사용하고, 다른 코드는 총점을 기준으로 사용합니다.
- 두 코드 모두 정렬된 리스트에서 **index**를 이용해 순위를 찾는 방식은 동일합니다.
- 내 코드는 평균 계산이라는 추가적인 연산이 있어 약간의 비효율이 있을 수 있지만, 문제에서 "평균 점수"를 기준으로 한다는 요구사항을 더 정확히 반영합니다.
- 다른 코드는 평균 계산 대신 총점을 활용함으로써 연산이 간결하고, 코드 길이가 짧습니다.
결론
- 두 코드 모두 등수를 매기는 기능을 잘 수행합니다.
- 문제의 요구사항을 엄밀히 따르려면 평균 점수를 사용하는 내 코드가 더 적합합니다.
- 간결한 코드와 효율성을 중시한다면 다른 코드도 충분히 좋은 선택입니다.
- 실제 구현에서는 문제의 의도와 코드를 작성하는 상황에 따라 선택하면 좋을 것 같습니다.
'프로그래머스' 카테고리의 다른 글
프로그래머스 | Python | 문자열 밀기 (1) | 2025.01.15 |
---|---|
프로그래머스 | Python | 유한소수 판별하기 (0) | 2025.01.13 |
프로그래머스 | Python | 치킨 쿠폰 (1) | 2025.01.08 |
프로그래머스 | Python | 저주의 숫자 3 (0) | 2025.01.07 |
프로그래머스 | Python | 종이 자르기 (0) | 2025.01.06 |