728x90

수학, 영어 점수가 배열로 주어질때 평균으로 등수를 순서대로 반환한 배열

public int[] solution(int[][] score) {

int[] answer = new int[score.length];

for(int i=0;i<score.length;i++){

    for(int j=0; j<score.length;j++){

         if(score[i][0]+score[i][1]<score[j][0]+score[j][1]){

    answer[i]++;

    }

}

answer[i]++;

}

return answer;

}

 이중for문으로 i번째학생의 총점보다  더 큰 학생을 만나면 rank 1증가  

 answer 원소 값은 0으로 초기화 되기 때문에 마지막 최고 rank가 1에서 시작하므로 1씩 증가 

 i와 j의 총점이 같은 경우도 rank를 증가시키면   동점자가 모두 등수가 내려간다.

 

public int[] solution2(int[][] score) {

List<Integer> scoreList = new ArrayList<>();

for(int[] t : score){

scoreList.add(t[0] + t[1]);

}

scoreList.sort(Comparator.reverseOrder());

 

int[] answer = new int[score.length];

for(int i=0; i<score.length; i++){

answer[i] = scoreList.indexOf(score[i][0] + score[i][1])+1;

}

return answer;

}

점수를 ArrayList에 넣고 ArrayList를 정렬하면 

index+1이 등수가 된다. 

1번 학생의 총점부터 indexOf 메서드로 인덱스를 알아내면 랭킹을 구할 수 있다.   

'Java > Coding Test' 카테고리의 다른 글

이진수 더하기 문제풀이  (0) 2023.09.17
한번만 등장한 문자 문제풀이  (0) 2023.09.17
삼각형의 완성조건(2) 문제풀이  (0) 2023.09.15
영어가 싫어요 문제풀이  (0) 2023.09.14
공 던지기 문제풀이  (0) 2023.09.14

+ Recent posts