๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

https://softeer.ai/practice/info.do?idx=1&eid=1309&sw_prbl_sbms_sn=179853 

 

Softeer

์—ฐ์Šต๋ฌธ์ œ๋ฅผ ๋‹ด์„ Set์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”. ์ทจ์†Œ ํ™•์ธ

softeer.ai


1. ๋ฌธ์ œ

๊ฐ ์ฐธ๊ฐ€์ž์˜ ๋Œ€ํšŒ๋ณ„ ๋“ฑ์ˆ˜ ๋ฐ ์ตœ์ข… ๋“ฑ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

2. ํ’€์ด

์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฌธ์ œ์ด๋‹ค.

1. idx, score๋ฅผ ๊ฐ™์ด ์ €์žฅํ•˜๋Š” Contest ํด๋ž˜์Šค ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์—ฌ๊ธฐ์— ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค. (๋งˆ์ง€๋ง‰์ค„๋„)

2. ์ž…๋ ฅ์„ ๋‹ค ๋ฐ›์•˜์œผ๋ฉด score๊ฐ€ ํฐ ์ˆœ์œผ๋กœ ๋žŒ๋‹ค์‹์„ ์จ์„œ ์ •๋ ฌํ•œ๋‹ค.

- ์—ฌ๊ธฐ์„œ ๋žŒ๋‹ค์‹ ๋•Œ๋ฌธ์— ํ—ค๋งธ๋Š”๋ฐ, 

for (Contest[] con : c) {

   Arrays.sort(con, (o1,o2)->o2.score - o1.score);

}

=> ์ด๊ฒŒ ๋งž๋Š” ํ‘œํ˜„์ธ๋ฐ ๋‚˜๋Š” ์ž๊พธ ํ™”์‚ดํ‘œ ๋’ค์— return์„ ๋ถ™์—ฌ์„œ ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ๋‹ค.

3. rank๋ฅผ ๋„ฃ์–ด์ฃผ๊ธฐ ์œ„ํ•˜์—ฌ int ํƒ€์ž…์˜ 2์ฐจ์›๋ฐฐ์—ด result๋ฅผ ๋งŒ๋“ค์–ด์„œ Contest๋ฐฐ์—ด ์•ˆ์— ์ •๋ ฌ๋œ ์ˆœ์„œ๋Œ€๋กœ idx๋ฅผ ๊บผ๋‚ด์„œ ํ•ด๋‹น idx์— rank๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ๋„ฃ์–ด์ค€๋‹ค.

- rank ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•์€

Contest๋ฐฐ์—ด์˜ row๋งˆ๋‹ค for๋ฌธ์„ ๋Œ๋ฆฌ๊ณ 

(rank=1, cnt=1 ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์‹œ์ž‘, 0๋ฒˆ์งธ๋Š” result์— rank=1์„ ๋„ฃ์–ด์ฃผ๊ณ  ์‹œ์ž‘ํ•œ๋‹ค.)

(๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋Š” 1๋ฒˆ์งธ๋ถ€ํ„ฐ ์‹œ์ž‘)

์ด์ „์˜ score์™€ ๊ฐ™์œผ๋ฉด rank๋Š” ๊ทธ๋Œ€๋กœ ๋„ฃ์–ด์ฃผ๊ณ  cnt๋งŒ 1์”ฉ ๋Š˜๋ ค์ค€๋‹ค. (๋“ฑ์ˆ˜๋Š” ๋™์ผ, ๋‹ค์Œ ๋“ฑ์ˆ˜๋ฅผ ์œ„ํ•ด cnt++)

์ด์ „์˜ score์™€ ๋‹ค๋ฅด๋ฉด rank์— cnt๋ฅผ ๋”ํ•œ ๊ฐ’์„ result์— ๋„ฃ์–ด์ฃผ๊ณ  cnt๋Š” ๋‹ค์‹œ 1๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

 

Arrays.sort(~) ์ •๋ ฌ์ด ํ•ต์‹ฌ์ธ๋“ฏ

 

3. ์ฝ”๋“œ

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


public class Main
{
    static int N, last, r;
    static Contest[][] c;

    public static void main(String args[]) throws Exception
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = null;
        N = Integer.parseInt(br.readLine());

        c = new Contest[4][N];

        for (int i=0; i<3; i++) {
            st = new StringTokenizer(br.readLine());
            for (int j=0; j<N; j++) {
                c[i][j] = new Contest(j, Integer.parseInt(st.nextToken()));
            }
        } //์ž…๋ ฅ ๋

        //๋Œ€ํšŒ๋ณ„ ๋“ฑ์ˆ˜
        for (int j=0; j<N; j++) {
            int sum = 0;
            for (int i=0; i<3; i++) {
                sum += c[i][j].score;
            }
            c[3][j] = new Contest(j, sum);
        }

        //์ค„๋งˆ๋‹ค ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
        for(Contest[] con : c) { //๋ณต์‚ฌ ์•„๋‹˜ ์‹ค์ œ ๊ฐ’์ž„
            Arrays.sort(con, (o1, o2) -> o2.score - o1.score);
        }

        //์ตœ์ข… ๋“ฑ์ˆ˜
        int[][] result = new int[4][N];
        for (int i=0; i<4; i++) {
            int rank = 1;
            int cnt = 1;
            result[i][c[i][0].idx] = rank;
            for (int j=1; j<N; j++) {
                if (c[i][j-1].score == c[i][j].score) {
                    result[i][c[i][j].idx] = rank;
                    cnt++;
                } else {
                    rank += cnt;
                    result[i][c[i][j].idx] = rank;
                    cnt = 1;
                }
            }
        }

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

    static class Contest{
        int idx, score;
        Contest(int idx, int score) {
            this.idx = idx;
            this.score = score;
        }
    }
}

 

4. ์‚ฌ๋‹ด

๋žŒ๋‹ค์‹ ๋งค๋ฒˆ ํ—ท๊ฐˆ๋ ธ๋Š”๋ฐ ์ด๋ฒˆ์— ๋‹ค์‹œ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณ ์ˆ˜๊ฐ€ ๋˜๊ณ ์‹ถ๋‹ค..