๊ด€๋ฆฌ ๋ฉ”๋‰ด

Binary Journey

[ํ…Œ์ฝ”ํ…Œ์ฝ”1.5 4-05] ์ง„๋ฃŒ ์ˆœ์„œ ์ •ํ•˜๊ธฐ ๋ณธ๋ฌธ

Algorithm/ํ…Œ์ฝ”ํ…Œ์ฝ”1.5(2025)

[ํ…Œ์ฝ”ํ…Œ์ฝ”1.5 4-05] ์ง„๋ฃŒ ์ˆœ์„œ ์ •ํ•˜๊ธฐ

binaryJournalist 2025. 2. 21. 13:56
๋ฐ˜์‘ํ˜•
๐Ÿ’กํ…Œ์ฝ”ํ…Œ์ฝ” ์‹œ์ฆŒ 1.5 4ํšŒ ๋ชจ์ž„ off-site ๋ฌธ์ œ ํ’€์ด์ž…๋‹ˆ๋‹ค. (2025.02.15)

 

๋ฌธ์ œ

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ง„๋ฃŒ ์ˆœ์„œ ์ •ํ•˜๊ธฐ

 

๋‚ด์šฉ

 

์™ธ๊ณผ์˜์‚ฌ ๋จธ์“ฑ์ด๋Š” ์‘๊ธ‰์‹ค์— ์˜จ ํ™˜์ž์˜ ์‘๊ธ‰๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ง„๋ฃŒ ์ˆœ์„œ๋ฅผ ์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ •์ˆ˜ ๋ฐฐ์—ด emergency๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ์‘๊ธ‰๋„๊ฐ€ ๋†’์€ ์ˆœ์„œ๋Œ€๋กœ ์ง„๋ฃŒ ์ˆœ์„œ๋ฅผ ์ •ํ•œ ๋ฐฐ์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

๊ธฐ๋กํ•˜๊ธฐ

๐Ÿ’ก ์–ด๋””๊นŒ์ง€ ์ƒ๊ฐํ•ด๋ดค๋Š”์ง€ ๋‹จ๊ณ„์ ์œผ๋กœ ๊ธฐ๋กํ•ด๋ด…๋‹ˆ๋‹ค.

์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜๋ ค ํ–ˆ๋‚˜์š”?

์ฒ˜์Œ์—๋Š” ํ ์‚ฌ์šฉ ์ƒ๊ฐ์„ ๋ชปํ–ˆ๋‹ค^^..

๋‚˜์ค‘์— ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์•Œ๊ณ  ์ ์šฉํ•จ

์ ์šฉ ๊ทผ๊ฑฐ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

์‘๊ธ‰๋„๊ฐ€ ๋†’์€ ์ˆœ์„œ๋Œ€๋กœ ์ง„๋ฃŒ ์ˆœ์„œ๋ฅผ ์ •ํ•œ ๋ฐฐ์—ด์„ returnํ•˜๋„๋ก ๋ผ๋Š” ๋ฌธ์žฅ์—์„œ ํžŒํŠธ๋ฅผ ์–ป์—ˆ๋‹ค.

๋ฌธ์ œ ํ’€์ด ๊ณผ์ •์—์„œ ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋ ค ํ–ˆ๋‚˜์š”?

PriorityQueue ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

ํ’€์ด

ํ’€์ด ์‹œ๊ฐ„

์‹œ์ž‘ ์‹œ๊ฐ ์ข…๋ฃŒ ์‹œ๊ฐ ์ด ์†Œ์š” ์‹œ๊ฐ„
    5๋ถ„

 

๋ฌธ์ œ ๋ถ„์„

์ œ์•ฝ ์‚ฌํ•ญ ํŒŒ์•… & ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ

์ œํ•œ์‚ฌํ•ญ
  • ์ค‘๋ณต๋œ ์›์†Œ๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • 1 ≤ emergency์˜ ๊ธธ์ด ≤ 10
  • 1 ≤ emergency์˜ ์›์†Œ ≤ 100

 

์ž…๋ ฅ๊ฐ’ ๋ถ„์„

๐Ÿ’ก ์ž…๋ ฅ๊ฐ’์„ ๋ถ„์„ํ•˜๋ฉด ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ„์ ‘์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ
emergency result
[3, 76, 24] [3, 1, 2]
[1, 2, 3, 4, 5, 6, 7] [7, 6, 5, 4, 3, 2, 1]
[30, 10, 23, 6, 100] [2, 4, 3, 5, 1]

 

์˜์‚ฌ ์ฝ”๋“œ ์ž‘์„ฑ

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๋™์ž‘ ์ค‘์‹ฌ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ์ˆœ์„œ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜์‚ฌ ์ฝ”๋“œ๋ฅผ ์ถฉ๋ถ„ํžˆ ํ…Œ์ŠคํŠธํ•ด๋ด…๋‹ˆ๋‹ค.

 

1์ฐจ ํ’€์ด

solution(emergency) {
    // sort ํ•œ ๋‹ค์Œ์— index๋ณ„๋กœ ๋ฐ˜ํ™˜~~~
}

 

2์ฐจ ํ’€์ด

solution(emergency) {
    // ์šฐ์„  ์ˆœ์œ„ ํ์— emergency ๋„ฃ๊ธฐ
    // ์šฐ์„  ์ˆœ์œ„ ํ์—์„œ ์›์†Œ ๋นผ๋ฉด์„œ rank ๋งค๊ธฐ๊ธฐ
}

 

 

๊ตฌํ˜„

 

1์ฐจ ํ’€์ด

import java.util.Arrays;
import java.util.Comparator;
import java.util.stream.Collectors;

class Solution {
    public int[] solution(int[] emergency) {
        return Arrays.stream(emergency)
            .map(i -> Arrays.stream(emergency).boxed()
                 .sorted(Comparator.reverseOrder())
                 .collect(Collectors.toList()).indexOf(i) + 1)
            .toArray();
    }
}

 

2์ฐจ ํ’€์ด

import java.util.*;

class Solution {
    public int[] solution(int[] emergency) {
        PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
        for (int i = 0; i < emergency.length ; i++) {
            pq.add(emergency[i]);
        }

        int rank = 1;
        int[] answer = new int[emergency.length];

        while (!pq.isEmpty()) {
            int front = pq.poll();
            for (int i = 0; i < emergency.length; i++) {
                if (emergency[i] == front && answer[i] == 0) {
                    answer[i] = rank++;
                    break;
                }
            }
        }
        return answer;
    }
}

 

๋ณต๊ธฐํ•˜๊ธฐ

๋‹ต์•ˆ๊ณผ ๋‚˜์˜ ํ’€์ด๋ฅผ ๋น„๊ตํ•ด๋ณด์„ธ์š”

์ถ”์ฒœ์„ ๊ฐ€์žฅ ๋งŽ์ด ๋ฐ›์€ ํ’€์ด

class Solution {
    public int[] solution(int[] emergency) {
        int[] answer = new int[emergency.length];

        for(int i = 0; i < answer.length; i++){
            if(answer[i] != 0){
                continue;
            }
            int idx = 1;
            for(int j = 0; j < answer.length; j++){
                if(emergency[i] < emergency[j]){
                    idx++;
                }
            }
            answer[i] = idx;
        }
        return answer;
    }
}
  • ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ •๋ ฌ์„ ํ™œ์šฉํ•˜์˜€๋‹ค.

 

์š”์•ฝํ•˜๊ธฐ

  • ์ œ๊ณต๋œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ž˜ ํ™œ์šฉํ•˜์ž!
๋ฐ˜์‘ํ˜•