Teddy Bear Holding A Heart Balloon [Lv.1] ์ถ”์–ต ์ ์ˆ˜
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿฅ‡ Coding Test/์˜ค๋‹ต๋…ธํŠธ

[Lv.1] ์ถ”์–ต ์ ์ˆ˜

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

 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

[ ๋ฌธ์ œ์„ค๋ช… ]

์‚ฌ์ง„๋“ค์„ ๋ณด๋ฉฐ ์ถ”์–ต์— ์ –์–ด ์žˆ๋˜ ๋ฃจ๋Š” ์‚ฌ์ง„๋ณ„๋กœ ์ถ”์–ต ์ ์ˆ˜๋ฅผ ๋งค๊ธธ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ง„ ์†์— ๋‚˜์˜ค๋Š” ์ธ๋ฌผ์˜ ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜๋ฅผ ๋ชจ๋‘ ํ•ฉ์‚ฐํ•œ ๊ฐ’์ด ํ•ด๋‹น ์‚ฌ์ง„์˜ ์ถ”์–ต ์ ์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์ง„ ์† ์ธ๋ฌผ์˜ ์ด๋ฆ„์ด ["may", "kein", "kain"]์ด๊ณ  ๊ฐ ์ธ๋ฌผ์˜ ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜๊ฐ€ [5์ , 10์ , 1์ ]์ผ ๋•Œ ํ•ด๋‹น ์‚ฌ์ง„์˜ ์ถ”์–ต ์ ์ˆ˜๋Š” 16(5 + 10 + 1)์ ์ด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ์ง„ ์† ์ธ๋ฌผ์˜ ์ด๋ฆ„์ด ["kali", "mari", "don", "tony"]์ด๊ณ  ["kali", "mari", "don"]์˜ ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜๊ฐ€ ๊ฐ๊ฐ [11์ , 1์ , 55์ ]]์ด๊ณ , "tony"๋Š” ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜๊ฐ€ ์—†์„ ๋•Œ, ์ด ์‚ฌ์ง„์˜ ์ถ”์–ต ์ ์ˆ˜๋Š” 3๋ช…์˜ ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜๋ฅผ ํ•ฉํ•œ 67(11 + 1 + 55)์ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ์›Œํ•˜๋Š” ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์„ ๋‹ด์€ ๋ฌธ์ž์—ด ๋ฐฐ์—ด name, ๊ฐ ์‚ฌ๋žŒ๋ณ„ ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜๋ฅผ ๋‹ด์€ ์ •์ˆ˜ ๋ฐฐ์—ด yearning, ๊ฐ ์‚ฌ์ง„์— ์ฐํžŒ ์ธ๋ฌผ์˜ ์ด๋ฆ„์„ ๋‹ด์€ ์ด์ฐจ์› ๋ฌธ์ž์—ด ๋ฐฐ์—ด photo๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์‚ฌ์ง„๋“ค์˜ ์ถ”์–ต ์ ์ˆ˜๋ฅผ photo์— ์ฃผ์–ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ returnํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

[ ํ’€์ด๊ณผ์ • ]

import java.util.*; 

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length]; 
        //์ •๋‹ต๋ฐฐ์—ด ํฌ๊ธฐ photo๋ฐฐ์—ด ํ–‰๊ธธ์ด์™€ ๋™์ผํ•˜๊ฒŒ ์„ค์ •
        HashMap<String, Integer> map = new HashMap<>();
        //HashMap์„ ์–ธ
        //key = name, value = yearning
        
        for (int i=0; i<name.length; i++) { //for๋ฌธ์œผ๋กœ ๋Œ๋ฉด์„œ
            map.put(name[i], yearning[i]); 
            //map์— name, yearning๋ฐฐ์—ด ์›์†Œ๋“ค์„ key์™€ value๋กœ ์Œ์„์ง€์–ด ๋„ฃ์–ด์คŒ
        }
        
        for (int i=0; i<photo.length; i++) { //photo๋ฐฐ์—ด ํ–‰์ˆœํšŒ
            int sum = 0; 
            //๊ทธ๋ฆฌ์›€์ ์ˆ˜ํ•ฉ์„ ๋‹ด์„ sum ์„ ์–ธ
            //i๊ฐ€ ์ฆ๊ฐ€ํ• ๋•Œ๋งˆ๋‹ค(photo๋ฐฐ์—ด ๋‹ค์Œํ–‰์œผ๋กœ ๋„˜์–ด๊ฐˆ๋•Œ๋งˆ๋‹ค) sum=0์œผ๋กœ ์ดˆ๊ธฐํ™”
            
            for (int j=0; j<photo[i].length; j++) { //photo๋ฐฐ์—ด ์—ด์ˆœํšŒ
                if (map.containsKey(photo[i][j])) { //map์— name(key)์ด ์žˆ์œผ๋ฉด
                    sum += map.get(photo[i][j]); 
                    //name(key)์— ํ•ด๋‹นํ•˜๋Š” yearning(value)๊ฐ’ ๊ฐ€์ ธ์™€์„œ
                    //sum์— ๋”ํ•ด์ฃผ๊ธฐ
                }
            }
            answer[i] = sum; 
            // ์ •๋‹ต๋ฐฐ์—ด์— sum ๋‹ด์•„์ฃผ๊ธฐ
            // ์ดํ›„ sum=0์œผ๋กœ ๋‹ค์‹œ ์ดˆ๊ธฐํ™”
        }
        return answer;
    }
}

[ ๋‹ค๋ฅธํ’€์ด ]

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        
        //์‚ผ์ค‘for๋ฌธ ์ด์šฉ
        for(int i = 0; i < photo.length; i++){ //photo๋ฐฐ์—ด ํ–‰์ˆœํšŒ
            for(int j = 0; j < photo[i].length; j++){ //photo๋ฐฐ์—ด ์—ด์ˆœํšŒ
                for(int k = 0; k < name.length; k++){ //name๋ฐฐ์—ด ์ˆœํšŒ
                    if(photo[i][j].equals(name[k])) answer[i] += yearning[k];
                    //photo๋ฐฐ์—ด์— name์ด ์žˆ์œผ๋ฉด
                    //name์— ํ•ด๋‹นํ•˜๋Š” yearning์„ ๋”ํ•ด์„œ answer์— ๋‹ด์•„์คŒ
                }
            }
        }
        return answer;
    }
}

[ ๋ฌธ๋ฒ•์ •๋ฆฌ ]

1. HashMap<key, value>
์š”์†Œ ์ถ”๊ฐ€ : map.put(key, value)
์š”์†Œ ์ ‘๊ทผ : map.get(key)
์š”์†Œ ์‚ญ์ œ : map.remove(key)
ํฌ๊ธฐ ํ™•์ธ : map.size()
์š”์†Œ ์กด์žฌ์—ฌ๋ถ€ ํ™•์ธ :
map.containsKey(key)
map.containsValue(value)