본문 바로가기
파이썬알고리즘

Programmers Weekly challenge - 2주차

by zho 2021. 8. 24.

https://programmers.co.kr/learn/courses/30/lessons/83201

 

코딩테스트 연습 - 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

○ 문제평가

난이도는 그렇게 어렵지 않은 편이나 문제가 길고 구현해야할게 은근히 많기 때문에 먼저 어떻게 구현할지 생각하고 접근한다면 쉽게 풀 수 있는 문제이다.

 

○ 나의 문제 풀이

def solution(scores):
    student_score = []
    EachStudent_score = []
    aver = []
    grade = ''
    for i in range(len(scores)):
      for j in range(len(scores)):
        student_score.append(scores[j][i])
      EachStudent_score.append(student_score) # 각 학생 점수

      # print(EachStudent_score.count(max(EachStudent_score[i])))

      # 유일한 최고점, 최저점 계산
      if EachStudent_score[i][i] == max(EachStudent_score[i]):
        if EachStudent_score[i].count(max(EachStudent_score[i])) == 1:
          EachStudent_score[i].remove(EachStudent_score[i][i])

      elif EachStudent_score[i][i] == min(EachStudent_score[i]):
        if EachStudent_score[i].count(min(EachStudent_score[i])) == 1:
          EachStudent_score[i].remove(EachStudent_score[i][i])

      # student_score 초기화
      student_score = []

    for i in range(len(scores)):
      aver.append(sum(EachStudent_score[i])/len(EachStudent_score[i]))
      if aver[i] >= 90:
        grade += 'A'
      elif aver[i] >= 80:
        grade += 'B'
      elif aver[i] >= 70:
        grade += 'C'
      elif aver[i] >= 50:
        grade += 'D'
      elif aver[i] < 50:
        grade += 'F'
    return grade

나는 각 학생별로 점수를 받고 그 중 최고점과 최저점을 계산해 조건에 맞는다면 list에서 제거시키는 방법을 이용했다.

 

728x90