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;
    }
}
  • μš°μ„ μˆœμœ„ 큐λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  정렬을 ν™œμš©ν•˜μ˜€λ‹€.

 

μš”μ•½ν•˜κΈ°

  • 제곡된 자료ꡬ쑰λ₯Ό 잘 ν™œμš©ν•˜μž!
λ°˜μ‘ν˜•