[swexpert] 1983. 조교의 성적 매기기 (python, java, D2)
728x90
반응형
10명이면 각 등급을 한 명당(10/10) 다르게 받게 된다
현재의 위치 (0부터 시작)을 n/10을 나눈 것이 각 등급의 인덱스를 가르킨다
내가 한 방법은 전체 점수(내림차순 기준)과 학생 번호를 같이 저장해서 번호를 찾아 해당 인덱스를 반환하는 식으로
풀었다
*추가
번호가 k인 학생이랑 같은 총점인 다른 학생이 없으므로 학생 번호를 저장할 필요없이 total 점수만 기억해놓고 점수가 같은지 비교하는 방법으로 구현하는 것이 더 좋을 듯하다
1. 파이썬 풀이
t=int(input())
rank=['A+','A0','A-','B+','B0','B-','C+','C0','C-','D0']
for i in range(1,t+1):
n,k=map(int,input().split())
arr=[]
for num in range(1,n+1):
a,b,c=map(int,input().split())
total=a*0.35+b*0.45+c*0.2
arr.append((total,num))
arr.sort(reverse=True)
print(f'#{i}',end=' ')
for idx,x in enumerate(arr):
if x[1]==k:
print(rank[int(idx/(n/10))])
break
2. 자바 풀이
import java.util.Scanner;
public class Solution {
static String grade[]= {"A+","A0","A-","B+","B0","B-","C+","C0","C-","D0"};
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
sc.nextLine();
for (int tc = 1; tc <=t; tc++) {
int n=sc.nextInt();
int k=sc.nextInt();
double [] score=new double[n];
for (int i = 0; i < n; i++) {
int mid=sc.nextInt();
int fin=sc.nextInt();
int project=sc.nextInt();
score[i]=mid*0.35+fin*0.45+project*0.2;
}
int rank=0; // 나중에 인덱스 0 시작이여서 0부터 증가
for (int i = 0; i < n; i++) {
if(score[i]>score[k-1])rank+=1;
}
System.out.printf("#%d %s\n",tc,grade[rank/(n/10)]);
}
sc.close();
}
}
728x90
반응형
'swexpert' 카테고리의 다른 글
[swexpert] 1948. 날짜 계산기 (python) (0) | 2020.12.30 |
---|---|
[swexpert] 1986. 지그재그 숫자 (python, java) (0) | 2020.12.29 |
[swexpert] 1984. 중간 평균값 구하기 (python, java) (0) | 2020.12.29 |
[swexpert] 1989. 초심자의 회문 검사 (python, java) (0) | 2020.12.29 |
[swexpert] 2001. 파리퇴치 (python, java, D2) (0) | 2020.12.29 |
TAGS.