728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/120882#
내 풀이
def solution(score):
answer = []
# 학생들의 평균을 담을 배열 mean
mean = []
for eng, math in score:
mean.append(eng * math / 2)
# 평균이 큰 점수가 1등이 되도록 내림차순 정렬을 한 배열 sort_mean
sort_mean = sorted(mean, reverse=True)
# mean의 각 원소가 sort_mean 배열의 몇 번째 인덱스인지 파악
# & 그 인덱스는 순위값을 의미함
for i in mean:
answer.append(sort_mean.index(i) + 1)
return answer
처음에는 위의 풀이로 풀었는데 테스트 케이스는 모두 맞고 실제 케이스들에서는 33점밖에 나오지 않았다;;;
이유를 알 수 없어서 여러가지 테스트 케이스들을 추가해서 봤는데,,, 굉장히 멍청한 실수였다!!!!
[정답 코드]
def solution(score):
answer = []
# 학생들의 평균을 담을 배열 mean
mean = []
for eng, math in score:
mean.append((eng + math) / 2)
# 평균이 큰 점수가 1등이 되도록 내림차순 정렬을 한 배열 sort_mean
sort_mean = sorted(mean, reverse=True)
# mean의 각 원소가 sort_mean 배열의 몇 번째 인덱스인지 파악
# & 그 인덱스는 순위값을 의미함
for i in mean:
answer.append(sort_mean.index(i) + 1)
return answer
처음에는 바보같이 평균을 (eng * math) / 2로 구했던 것이였다;;;
너무 바보 같은 실수라 웃음이 나온다 ㅋㅋㅋㅋㅋㅋ
먼저, 학생들의 평균을 담을 배열 mean을 생성한다.
이 후, 내림차순 정렬을 한 배열 sort_mean을 새롭게 만든다.
다음으로, mean의 각 원소가 sort_mean 배열의 몇 번째 인덱스인지 파악하는데,
이때, sort_mean의 인덱스는 순위 값이므로, mean 값이 sort_mean의 몇 번째 인덱스인지 파악하면 그 순위값을 알 수 있다.
다른 사람 풀이
def solution(score):
a = sorted([sum(i) for i in score], reverse = True)
return [a.index(sum(i))+1 for i in score]
내가 한 풀이랑 유사하지만, 나는 좀 더 직관적이게 푼 풀이이고, 위의 풀이는 짧게 푼 풀이이다.
느낀점
너무 바보 같은 실수를 해서 오히려 웃긴 문제였다.
그래도 나름 간단하게 풀어서 좋다.
728x90
'코딩테스트 > PYTHON' 카테고리의 다른 글
[프로그래머스][PYTHON] Lv. 0 유한소수 판별하기 (1) | 2024.03.29 |
---|---|
[프로그래머스][PYTHON] Lv. 0 치킨 쿠폰 (0) | 2024.03.25 |
[프로그래머스][PYTHON] Lv. 0 이진수 더하기 (0) | 2024.03.20 |
[프로그래머스][PYTHON] Lv. 0 삼각형의 완성조건 (2) (3) | 2024.03.19 |
[프로그래머스][PYTHON] Lv. 0 저주의 숫자 3 (0) | 2024.03.19 |