[Python] 프로그래머스 - Weekly Challenge 2주차
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/83201
# 저번주부터 매주마다 한 문제씩 공개되는 weekly challenge이다.
이번 주 문제는 저번 주보다는 어려웠지만, 단순 구현문제였다.
1. 학생들이 받은 점수는 가로 값을 보는 것이 아니라 세로값을 봐야 하므로
2중 for문에서 scores[j][i]로 s에 append해주었다.
2. 자기 자신한테 준 점수는 scores[i][i]이므로 target = scores[i][i]로 설정하고
s(i번 학생이 받은 점수들)의 최댓값이 target이고 s.count(target) = 1이거나 (유일한 값)
s의 최솟값이 target이고 그 값이 유일하면 score_sum에 [받은 총점수 - target, 사람 수 -1]을 넣어주고
그게 아니라면 score_sum에 [받은 총점수, 사람 수]를 넣어준다.
3. i번 학생이 받은 평균은 score_sum[i]의 (받은 총점수 / 사람 수)이므로
i[0] / i[1]을 if문으로 걸러서 answer에 각각 학점을 더해주면 된다.
def solution(scores):
answer = ''
score_sum = []
for i in range(len(scores)):
s = []
for j in range(len(scores)):
s.append(scores[j][i])
target = scores[i][i]
if (max(s) == target and s.count(target) == 1) or (min(s) == target and s.count(target) == 1):
score_sum.append([sum(s) - target, len(scores) - 1])
else:
score_sum.append([sum(s), len(scores)])
for i in score_sum:
if i[0] / i[1] >= 90:
answer += 'A'
elif i[0] / i[1] >= 80:
answer += 'B'
elif i[0] / i[1] >= 70:
answer += 'C'
elif i[0] / i[1] >= 50:
answer += 'D'
elif i[0] / i[1] < 50:
answer += 'F'
return answer
728x90
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Python] 프로그래머스 - 문자열 압축 (0) | 2021.08.26 |
---|---|
[Python] 프로그래머스 - 자물쇠와 열쇠 (0) | 2021.08.24 |
[Python] 프로그래머스 - 거리두기 확인하기 (0) | 2021.07.10 |
[Python] 프로그래머스 - 단속카메라 (0) | 2021.06.02 |
[Python] 프로그래머스 - 섬 연결하기 (0) | 2021.06.01 |
TAGS.