학습
시험

학점 분배

난이도
BEGINNER

문제 설명

1번부터 n(=3k)번까지의 번호가 부여된 n명의 학생들의 점수가 담긴 배열 scores가 주어집니다. 이 때, 학생들에게 아래 기준에 따라 등급을 부여하려고 합니다.

  • 상위 33% (k명) : "A"
  • 중간 33% (k명) : "B"
  • 하위 33% (k명) : "C"

점수가 높은 학생부터 상위 등급을 부여하며, 만약 점수가 같다면 학생 번호가 작은 순서대로 상위 등급을 부여합니다. 모든 학생들에 대해 번호 순서대로 학생이 부여받은 등급을 반환하는 solution 함수를 작성하시오.


제한 사항

  • scores의 길이 n은 3 이상 100,000 이하이며 3의 배수입니다.
  • scores의 각 원소는 1 이상 100 이하의 정수입니다.

예시 테스트케이스 설명

테스트케이스 번호 scores return
1 [70,80,90,60,50,85] ["B","B","A","C","C","A"]
2 [70,70,70] ["A","B","C"]
3 [100,100,98,96,98,99] ["A","A","B","C","C","B"]

1번 테스트케이스 설명

  • (학생 번호, 점수) 로 묶어 나열하면 다음과 같습니다.
    • (1, 70), (2, 80), (3, 90), (4, 60), (5, 50), (6, 85)
  • 점수를 기준으로 정렬하면 다음과 같습니다.
    • (3, 90), (6, 85), (2, 80), (1, 70), (4, 60), (5, 50)
  • 이에 순서대로 2명씩 등급을 부여한 뒤 학생 번호 순서대로 나열된 결과는 ["B","B","A","C","C","A"] 입니다.

2번 테스트케이스 설명

  • 모든 점수가 동일(70)이므로 학생 번호 기준으로 순서대로 1명씩 등급을 부여합니다.
  • 이에 학생 번호 순서대로 나열된 학생별 등급 결과는 ["A","B","C"] 입니다.

3번 테스트케이스 설명

  • (학생 번호, 점수) 로 묶어 나열하면 다음과 같습니다.
    • (1, 100), (2, 100), (3, 98), (4, 96), (5, 98), (6, 99)
  • 점수를 기준으로 정렬하면 다음과 같습니다.
    • (1, 100), (2, 100), (6, 99), (3, 98), (5, 98), (4, 96)
  • 이에 순서대로 2명씩 등급을 부여한 뒤 학생 번호 순서대로 나열된 결과는 ["A","A","B","C","C","B"] 입니다.