알고리즘/프로그래머스

[위클리 챌린지] 2주차

래울 2021. 8. 25. 19:56

https://programmers.co.kr/learn/courses/30/lessons/83201?language=python3

 

코딩테스트 연습 - 2주차

[[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[70,49,90],[68,50,38],[73,31,100]] "CFD"

programmers.co.kr

 

- Python 풀이

# 2차원 리스트 슬라이싱을 쓰려고, numpy사용

 

import numpy as np
def solution(scores):
    scores = np.array(scores)
    answer = ''
    dic = {}
    for i in range(len(scores)):
        dic.setdefault(i, list(scores[:,i]))
        
    for i in range(len(scores)):
        if dic[i].count(dic[i][i])==1 and (min(dic[i])==scores[i][i] or max(dic[i])==scores[i][i]):
            del dic[i][i]
    for i in range(len(dic)):
        temp = sum(dic[i])/len(dic[i])
        if temp >= 90: answer += 'A'
        elif temp >= 80: answer += 'B'
        elif temp >= 70: answer += 'C'
        elif temp >= 50: answer += 'D'
        else: answer += 'F'
    return answer