Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

JH 개발 블로그

Softeer [HSAT 5회 정기 코딩 인증평가 기출] 성적 평가 자바 본문

코딩테스트/Softeer

Softeer [HSAT 5회 정기 코딩 인증평가 기출] 성적 평가 자바

쿠우우훈 2024. 6. 24. 22:22

https://softeer.ai/practice/6250

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

 

배열에 점수와 인덱스를 잘 담아서 정렬 하면 되는 문제였다.

 

1. 배열에 점수와 인덱스를 저장한다.

2. 배열을 내림차순 정렬한다. ( 점수 기준으로 )

3. 내림차순 정렬된 배열의 인덱스를 바탕으로 정답 배열의 인덱스에 rank를 매긴다. (내림차순 배열의 이전 요소가 지금 요소와 같다면 rank 값은 그대로, 아니라면 i+1)  

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        // 점수, 인덱스를 담을 배열 생성
        // 마지막 행은 total 점수
        int[][][] arr = new int[4][n][2];

        for (int i=0; i<3; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int j=0; j<n; j++) {
                int score = Integer.parseInt(st.nextToken());
                // [0]은 점수
                // [1]은 인덱스
                arr[i][j][0] = score;
                arr[i][j][1] = j;

                // 토탈 스코어
                arr[3][j][0] += score;
                arr[3][j][1] = j;
            }
        }


        // 내림차순 정렬
        for (int i=0; i<4; i++) {
            Arrays.sort(arr[i],(a,b) -> b[0] - a[0]);
        }

        // 정답 배열
        int[][] answer = new int[4][n];

        
        for (int i=0; i<4; i++) {

            // 매 대회마다 1로 초기화
            int rank = 1;
            answer[i][arr[i][0][1]] = rank;
            for (int j=1; j<n; j++) {
                // 이전이랑 점수가 다르면 j+1
                if (arr[i][j][0] != arr[i][j-1][0]) {
                    rank = j+1;
                }
                int idx = arr[i][j][1];
                answer[i][idx] = rank;
            }
        }

        for (int i=0; i<4; i++) {
            for (int j=0; j<n; j++) {
                System.out.print(answer[i][j] + " ");
            }
            System.out.println();
        }
    }
}

 

Comments