Hello Kitty Eyes Shut
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป ์ฝ”ํ…Œ/๐Ÿ“Œ JAVA

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/JAVA] ์ถ”์–ต ์ ์ˆ˜

๋ฐ˜์‘ํ˜•

 

 

 

๐Ÿ”— ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ

 

https://school.programmers.co.kr/learn/courses/30/lessons/176963

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 


๐Ÿ“Œ ๋ฌธ์ œ ์š”์•ฝ

 

 

๐Ÿ–ผ๏ธ ์ถ”์–ต ์ ์ˆ˜ ๊ณ„์‚ฐํ•˜๊ธฐ

  • ๊ทœ์น™
    • ์‚ฌ์ง„ ์† ์ธ๋ฌผ์˜ ์ด๋ฆ„์„ ํ™•์ธํ•œ๋‹ค.
    • ํ•ด๋‹น ์ธ๋ฌผ์ด name[ ]์— ์žˆ์œผ๋ฉด → yearning[ ]์—์„œ ์ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
    • ์ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ํ•œ ๊ฐ’์ด ๊ทธ ์‚ฌ์ง„์˜ ์ถ”์–ต ์ ์ˆ˜์ด๋‹ค.
    • ์ด๋ฅผ ๋ชจ๋“  ์‚ฌ์ง„์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•ด์„œ ๊ฒฐ๊ณผ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ’Œ ์ž…๋ ฅ

  • name[ ] → ๊ทธ๋ฆฌ์›Œํ•˜๋Š” ์‚ฌ๋žŒ ์ด๋ฆ„ ๋ชฉ๋ก
  • yearingp[ ]  → ๊ฐ ์‚ฌ๋žŒ์˜ ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜
  • photo[ ][ ] → ์‚ฌ์ง„ ์† ์ธ๋ฌผ๋“ค์˜ ์ด๋ฆ„ ๋ชฉ๋ก

 

 

์˜ˆ๋ฅผ ๋“ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

name:    ["may", "kein", "kain", "radi"]
yearning:[5,     10,     1,      3]
photo:   [
           ["may", "kein", "kain", "radi"],  // 5+10+1+3 = 19
           ["may", "kein", "brin", "deny"],  // 5+10 = 15
           ["kon", "kain", "may", "coni"]    // 1+5 = 6
         ]
๊ฒฐ๊ณผ: [19, 15, 6]

 


๐Ÿ’ก ์•„์ด๋””์–ด

1๏ธโƒฃ์ด๋ฆ„ → ์ ์ˆ˜ ๋งคํ•‘ ์ƒ์„ฑ

์‚ฌ์ง„์„ ์ˆœํšŒํ•  ๋•Œ ์ด๋ฆ„์˜ ์ ์ˆ˜๋ฅผ O(1)์— ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด

name[i]์™€ yearning[i]๋ฅผ ๋งค์นญํ•˜์—ฌ Map<String, Integer>์— ์ €์žฅํ•ด์ค€๋‹ค.

Map<String, Integer> map = new HashMap<>();
for(int i = 0; i < name.length; i++){
    map.put(name[i], yearning[i]);
}

 

 

2๏ธโƒฃ ์‚ฌ์ง„๋ณ„ ํ•ฉ๊ณ„ ๊ณ„์‚ฐํ•˜๊ธฐ

  1. photo์˜ ๊ฐ ํ–‰(= ํ•œ ์žฅ์˜ ์‚ฌ์ง„)์„ ์ˆœํšŒํ•œ๋‹ค.
  2. ์ด ๊ณผ์ •์—์„œ ์‚ฌ์ง„ ์† ์ธ๋ฌผ ์ด๋ฆ„๋“ค์„ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์™€์„œ ๋งต์—์„œ ์ ์ˆ˜ ์กฐํšŒ ํ›„ ํ•ฉ์‚ฐํ•œ๋‹ค.
  3. ๋งŒ์•ฝ ์ด๋ฆ„์ด ๋งต์— ์—†๋‹ค๋ฉด, getOrDefault(person, 0)์œผ๋กœ 0์  ์ฒ˜๋ฆฌํ•œ๋‹ค.
  4. ๊ณ„์‚ฐ๋œ ํ•ฉ๊ณ„๋ฅผ answer[i]์— ์ €์žฅํ•œ๋‹ค.
for(int i= 0; i < photo.length; i++){
    int sum = 0;
            
    for(int j = 0; j < photo[i].length; j++){
        String person = photo[i][j];
        sum += map.getOrDefault(person, 0);
    }
            
    answer[i] = sum;
}

 

 

๋‚˜๋Š” 3๋ฒˆ์งธ ๋ถ€๋ถ„์—์„œ ์‹œ๊ฐ„์„ ์žก์•„ ๋จน์—ˆ๋‹ค (ลฬฅฬฅฬฅฬฅ ษžลฬฅฬฅฬฅฬฅ)

์‚ฌ์ง„์— ์žˆ๋Š” ์ธ๋ฌผ์ด ๋งต์— ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์ ์„ ์ƒ๊ฐ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค ..ใ…Žใ…Ž

์™œ ํ†ต๊ณผ๊ฐ€ ์•ˆ ๋˜๋Š” ๊ฑฐ์ง€ ํ•˜๋ฉฐ ํ•œ์ฐธ์„ ๊ณ ๋ฏผํ–ˆ์—ˆ๋Š”๋ฐ,

์ด ๊ธ€์„ ๋ณด๋Š” ๋ถ„๋“ค์€ ๋ฌธ์ œ๋ฅผ ๊ผผ๊ผผํžˆ ์ฝ๊ณ  ํ’€๊ธฐ๋ฅผ ,,สšโ‚โ‘…แขโ€ธ ฬซ โ€ธแขโ‚Žษž

 


๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ์ตœ์ข… ์ฝ”๋“œ

import java.util.HashMap;
import java.util.Map;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        
        int[] answer = new int[photo.length];
        
        Map<String, Integer> map = new HashMap<>();
        for(int i = 0; i < name.length; i++){
            map.put(name[i], yearning[i]);
        }
        
        for(int i= 0; i < photo.length; i++){
            int sum = 0;
            
            for(int j = 0; j < photo[i].length; j++){
                String person = photo[i][j];
                sum += map.getOrDefault(person, 0);
            }
            
            answer[i] = sum;
        }
        
        return answer;
    }
}

 


๐Ÿ•‘ ์‹œ๊ฐ„ ๋ณต์žก๋„

1๏ธโƒฃ ์ด๋ฆ„ → ์ ์ˆ˜ ๋งคํ•‘

for (int i = 0; i < name.length; i++) {
    map.put(name[i], yearning[i]);
}

 

name ๋ฐฐ์—ด์„ ํ•œ ๋ฒˆ ์ˆœํšŒํ•˜๋ฉฐ ํ•ด์‹œ๋งต์— ์ €์žฅํ•˜๋Š” ๋ถ€๋ถ„์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด๋‹ค.

(์—ฌ๊ธฐ์„œ N์€ ์‚ฌ๋žŒ ์ˆ˜์ด๊ณ , ์ฐธ๊ณ ๋กœ ํ‰๊ท ์ ์œผ๋กœ put์€ O(1)์ด๋ผ๊ณ  ํ•œ๋‹ค.)

 

2๏ธโƒฃ ์‚ฌ์ง„๋ณ„ ํ•ฉ์‚ฐ

for (int i = 0; i < photo.length; i++) {
    int sum = 0;
    for (int j = 0; j < photo[i].length; j++) {
        String person = photo[i][j];
        sum += map.getOrDefault(person, 0);
    }
    answer[i] = sum;
}

 

๋ชจ๋“  ์‚ฌ์ง„์˜ ์ด๋ฆ„์„ ํ•œ ๋ฒˆ์”ฉ ์กฐํšŒํ•˜๋Š”๋ฐ, ๊ฐ ์กฐํšŒ๋Š” ํ‰๊ท  O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

๋˜ํ•œ, ๋ฐ˜๋ณต๋ฌธ 2๊ฐœ๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋“  ์‚ฌ์ง„์— ๋“ฑ์žฅํ•˜๋Š” ์ด๋ฆ„๋“ค์˜ ์ด ํ•ฉ์ด๋ฏ€๋กœ,

์‚ฌ์ง„ ์† ์ด๋ฆ„์˜ ์ด ํ•ฉ์„ P๋ผ๊ณ  ๋’€์„ ๋•Œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(P)์ด๋‹ค.

(P = Σ photo[i].length ๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.)

 

๐Ÿ‘‰๐Ÿป ๋”ฐ๋ผ์„œ ์ตœ์ข… ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N + P)์ด๋‹ค.

      (์ด๋•Œ N์€ name ๋ฐฐ์—ด์— ์žˆ๋Š” ์‚ฌ๋žŒ ์ˆ˜์ด๊ณ , P๋Š” ๋ชจ๋“  ์‚ฌ์ง„์—์„œ ์ด๋ฆ„์˜ ์ดํ•ฉ์ด๋‹ค.)

๋ฐ˜์‘ํ˜•