본문 바로가기
알고리즘

프로그래머스 위클리 챌린지 2주차 - 상호평가

by Lihano 2021. 10. 8.
반응형

풀이 언어 : PYTHON

def solution(scores):
    answer = ''
    
    # 학생 한 명이 받은 점수들을 따로 뽑아 배열로 만들자
    n = len(scores)
    arr = [0 for _ in range(n)]
    
    add = 0
    avg = 0
    
    for i in range(n) :
        # 학생 i가 받은 점수들
        for j in range(n) :
            arr[j] = scores[j][i]
            
        # i가 자신에게 매긴 점수가 최저 혹은 최고라면
        if arr[i] == max(arr) or arr[i] == min(arr) :
            if arr.count(arr[i]) == 1 :
                # i가 매긴 점수는 빼고 평균 구한다
                add = sum(arr) - arr[i]
                avg = add / (n-1)
            else :
                add = sum(arr)
                avg = add / n
        else :
            add = sum(arr)
            avg = add / n
            
        print(avg)
            
        # 평균을 구했으니 성적을 매기자
        if avg >= 90 :
            answer += "A"
        elif avg >= 80 :
            answer += "B"
        elif avg >= 70 :
            answer += "C"
        elif avg >= 50 :
            answer += "D"
        else :
            answer += "F"
            
    return answer

 

어려운 문제는 아닌데 성가시고 귀찮은 부분이 있다.

우선 핵심은 2차원 배열의 세로 줄을 따로 뽑아 별도의 배열로 만드는 거다.

이제 그 안에서 평균을 구하고 최고점 최저점을 구하면 된다.

시간 효율성을 보지 않기 때문에 결과만 도출한다면 그냥 다 풀 수 있다.

굿굿. 그런데 4주차 문제는 어디간거지? ;;;

 

 

링크

코딩테스트 연습 - 2주차_상호평가 | 프로그래머스 (programmers.co.kr)

반응형

댓글