728x90

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

์‹คํŒจ์œจ

 

๐Ÿ”Ž ๋ฌธ์ œ ํ’€์ด

์‰ฌ์›Œ ๋ณด์ด๋ฉด์„œ๋„ ์€๊ทผํžˆ ํ‘ธ๋Š”๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค ,,

 

HashMap์„ ์‚ฌ์šฉํ•ด key๊ฐ’์€ ์Šคํ…Œ์ด์ง€ ๋ฒˆํ˜ธ, value๊ฐ’์€ ์‹คํŒจ์œจ์„ ์ €์žฅํ•œ ํ›„ ์ •๋ ฌํ•˜๋ฉด ๋˜๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.

HashMap ์ •๋ ฌ์— ๋Œ€ํ•ด ๊ตฌ๊ธ€๋ง ํ•ด๋ณด๋‹ˆ map์˜ keySet์„ ์ด์šฉํ•ด ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

[Java] Map์„ Key, Value๋กœ ์ •๋ ฌํ•˜๊ธฐ

Java์—์„œ HashMap ์ •๋ ฌ์ด ํ•„์š”ํ•  ๋•Œ, ๊ทธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.์ •๋ ฌ ๊ธฐ์ค€์€ key, value ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.map ์˜ keySet์„ ์ด์šฉํ•˜์—ฌ ์ •๋ ฌํ•œ๋‹ค.์˜ค๋ฆ„์ฐจ์ˆœ ์‹œ์—๋Š” Collection.sort(), ๋‚ด๋ฆผ์ฐจ์ˆœ ์‹œ์—๋Š” Col

velog.io

 

๊ฐ ์Šคํ…Œ์ด์ง€๋งˆ๋‹ค ์‹คํŒจ์œจ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด stages๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋ฐฐ์—ด ๋‘ ๊ฐœ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. 

 

1) ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ–ˆ์œผ๋‚˜ ์•„์ง ํด๋ฆฌ์–ดํ•˜์ง€ ๋ชปํ•œ ํ”Œ๋ ˆ์ด์–ด์˜ ์ˆ˜๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด

2) ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ•œ ํ”Œ๋ ˆ์ด์–ด ์ˆ˜๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด

 

๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๊ฐ€ ์Šคํ…Œ์ด์ง€ ๋ฒˆํ˜ธ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ , ๊ฐ ์Šคํ…Œ์ด์ง€ ๋ฒˆํ˜ธ์™€ ์ผ์น˜ํ•˜๋Š” ์ธ๋ฑ์Šค์— ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.

๋‘ ๋ฐฐ์—ด์˜ ๊ฐ™์€ ์ธ๋ฑ์Šค์— ๋“ค์–ด์žˆ๋Š” ์›์†Œ ๊ฐ’์„ ๋‚˜๋ˆ„์–ด ์‹คํŒจ์œจ์„ ๊ณ„์‚ฐํ•˜๊ณ , HashMap์— ์ €์žฅํ•˜๋ฉด ๋œ๋‹ค.

๋งŒ์•ฝ ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ•œ ์œ ์ €๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, ์‹คํŒจ์œจ์„ 0์œผ๋กœ ์ •์˜ํ•˜๋Š” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

Key Point

๐Ÿ”‘ ๋ฐฐ์—ด์„ ํ™œ์šฉํ•ด ์‹คํŒจ์œจ์„ ๊ตฌํ•œ๋‹ค.

๐Ÿ”‘ HashMap์„ ์‚ฌ์šฉํ•ด ์Šคํ…Œ์ด์ง€ ๋ฒˆํ˜ธ(key)์™€ ์‹คํŒจ์œจ(value)์„ ์ €์žฅํ•œ๋‹ค.

๐Ÿ”‘ ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ•œ ์œ ์ €๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ(์‹คํŒจ์œจ = 0)๋ฅผ ๊ณ ๋ คํ•œ๋‹ค.

๐Ÿ”‘ ์‹คํŒจ์œจ(value)์„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ํ›„, ์Šคํ…Œ์ด์ง€ ๋ฒˆํ˜ธ(key)๋ฅผ ๋ฐฐ์—ด answer์— ๋„ฃ์–ด์ค€๋‹ค.

 

Java ์ฝ”๋“œ

import java.util.*;

class Solution {
    public int[] solution(int N, int[] stages) {
        int[] answer = new int[N];
        
        // ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ–ˆ์œผ๋‚˜ ์•„์ง ํด๋ฆฌ์–ดํ•˜์ง€ ๋ชปํ•œ ํ”Œ๋ ˆ์ด์–ด ์ˆ˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด
        
        int[] stageCount = new int[N+2];
        
        for (int stage : stages) {
            stageCount[stage]++;
        }
        
        // ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ•œ ํ”Œ๋ ˆ์ด์–ด ์ˆ˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด
        
        int[] stagePassCount = new int[N+1];
        
        stagePassCount[N] = stageCount[N] + stageCount[N+1];
        
        for (int i=N-1; i>=1; i--) {
            stagePassCount[i] = stageCount[i] + stagePassCount[i+1];
        }
        
        // HashMap์„ ์‚ฌ์šฉํ•ด ์‹คํŒจ์œจ ์ €์žฅ (Key: ์Šคํ…Œ์ด์ง€ ๋ฒˆํ˜ธ, value: ์‹คํŒจ์œจ)
        
        HashMap<Integer,Double> map = new HashMap<>();
        
        for (int i=1; i<=N; i++) {
            
            if (stagePassCount[i] == 0) {
                map.put(i, (double)0);
            }
            else {
                map.put(i, (double)stageCount[i]/stagePassCount[i]);
            }
        }
        
        // ๊ฐ ์Šคํ…Œ์ด์ง€ ๋ฒˆํ˜ธ(key)๋ฅผ ์‹คํŒจ์œจ(value)์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
        
        List<Integer> keySet = new ArrayList<>(map.keySet());
        keySet.sort((o1, o2) -> map.get(o2).compareTo(map.get(o1)));
        
        int idx = 0;
        for (int stage : keySet) {
            answer[idx++] = stage;
        }
        
        return answer;
    }
}

728x90

+ Recent posts