
평균 구하기 문제입니다. 다만 하나 다른점이 특정 인덱스의 값이 최댓값 또는 최솟값일 경우에 그 수를 제외하고 평균을 구하면 되는 문제입니다.
#학점 구하기
def checkCredit(avg):
if avg >= 90:
return "A";
elif 90 > avg >= 80:
return "B";
elif 80 > avg >= 70:
return "C";
elif 70 > avg >= 50:
return "D";
elif 50 > avg:
return "F";
#문제 풀이
def solution(scores):
answer = '';
avg = []; #각 학생의 평균을 담아줄 avg
for i in range(0, len(scores)):
now = []; #이번 학생의 점수를 모두 담아줄 now
my_score = 0; #자신을 평가한 점수
#now에 점수를 담아주며 만약 내가 평가한 점수일 경우
#my_score에도 담아줍니다.
for j in range(0, len(scores)):
now.append(scores[j][i]);
if j == i:
my_score = scores[j][i];
#만약 자신을 평가한 점수가 최댓값 또는 최솟값 일 경우 if 실행
if my_score == max(now) or my_score == min(now):
#만약 최댓값, 또는 최솟값인 my_score의 개수가 1개 이상일 경우
#그냥 평균을 구해서 avg에 넣어줍니다.
if now.count(my_score) > 1:
avg.append(sum(now)/len(now));
#my_score의 개수가 1개라면 해당 수를 빼고, 갯수도 빼서 평균을
#구해 avg에 넣어줍니다.
else:
avg.append((sum(now)-my_score)/(len(now)-1));
#내 점수가 최댓값, 최솟값이 아니라면 그냥 평균을 구해줍니다.
else:
avg.append(sum(now)/len(now));
#각 평균의 수를 하나씩 꺼내 checkCredit()를 이용하여 answer에 이어줍니다.
for a in avg:
answer += checkCredit(a);
return answer;