'๊ฐœ๋ฐœ'์ž๊ตญ ๐Ÿพ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ•ด์‹œ(Hash) ์œ„์žฅ _ ์ž๋ฐ”Java ๋ณธ๋ฌธ

๊ฐœ์ธ๊ณต๋ถ€/Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ•ด์‹œ(Hash) ์œ„์žฅ _ ์ž๋ฐ”Java

young_9 2020. 7. 13. 00:52

๋‚œ์ด๋„: Level 2

 1. ๋ฌธ์ œ  

https://programmers.co.kr/learn/courses/30/lessons/42578

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์œ„์žฅ

 

programmers.co.kr

| ๋ฌธ์ œ ์„ค๋ช…

์ŠคํŒŒ์ด๋“ค์€ ๋งค์ผ ๋‹ค๋ฅธ ์˜ท์„ ์กฐํ•ฉํ•˜์—ฌ ์ž…์–ด ์ž์‹ ์„ ์œ„์žฅํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ŠคํŒŒ์ด๊ฐ€ ๊ฐ€์ง„ ์˜ท์ด ์•„๋ž˜์™€ ๊ฐ™๊ณ  ์˜ค๋Š˜ ์ŠคํŒŒ์ด๊ฐ€ ๋™๊ทธ๋ž€ ์•ˆ๊ฒฝ, ๊ธด ์ฝ”ํŠธ, ํŒŒ๋ž€์ƒ‰ ํ‹ฐ์…”์ธ ๋ฅผ ์ž…์—ˆ๋‹ค๋ฉด ๋‹ค์Œ๋‚ ์€ ์ฒญ๋ฐ”์ง€๋ฅผ ์ถ”๊ฐ€๋กœ ์ž…๊ฑฐ๋‚˜ ๋™๊ทธ๋ž€ ์•ˆ๊ฒฝ ๋Œ€์‹  ๊ฒ€์ • ์„ ๊ธ€๋ผ์Šค๋ฅผ ์ฐฉ์šฉํ•˜๊ฑฐ๋‚˜ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ข…๋ฅ˜ ์ด๋ฆ„
์–ผ๊ตด ๋™๊ทธ๋ž€ ์•ˆ๊ฒฝ, ๊ฒ€์ • ์„ ๊ธ€๋ผ์Šค
์ƒ์˜ ํŒŒ๋ž€์ƒ‰ ํ‹ฐ์…”์ธ 
ํ•˜์˜ ์ฒญ๋ฐ”์ง€
๊ฒ‰์˜ท ๊ธด ์ฝ”ํŠธ

์ŠคํŒŒ์ด๊ฐ€ ๊ฐ€์ง„ ์˜์ƒ๋“ค์ด ๋‹ด๊ธด 2์ฐจ์› ๋ฐฐ์—ด clothes๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ์„œ๋กœ ๋‹ค๋ฅธ ์˜ท์˜ ์กฐํ•ฉ์˜ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

| ์ œํ•œ์‚ฌํ•ญ

  • clothes์˜ ๊ฐ ํ–‰์€ [์˜์ƒ์˜ ์ด๋ฆ„, ์˜์ƒ์˜ ์ข…๋ฅ˜]๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ŠคํŒŒ์ด๊ฐ€ ๊ฐ€์ง„ ์˜์ƒ์˜ ์ˆ˜๋Š” 1๊ฐœ ์ด์ƒ 30๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์˜์ƒ์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • clothes์˜ ๋ชจ๋“  ์›์†Œ๋Š” ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 20 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ด๊ณ  ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž ๋˜๋Š” '_' ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ŠคํŒŒ์ด๋Š” ํ•˜๋ฃจ์— ์ตœ์†Œ ํ•œ ๊ฐœ์˜ ์˜์ƒ์€ ์ž…์Šต๋‹ˆ๋‹ค.

|์ž…์ถœ๋ ฅ ์˜ˆ

 clothes  return
 [[yellow_hat, headgear],   [blue_sunglasses, eyewear],   [green_turban, headgear]]  5
 [[crow_mask, face],   [blue_sunglasses, face],     [smoky_makeup, face]]  3

 

| ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

 

์˜ˆ์ œ #1

headgear์— ํ•ด๋‹นํ•˜๋Š” ์˜์ƒ์ด yellow_hat, green_turban์ด๊ณ  eyewear์— ํ•ด๋‹นํ•˜๋Š” ์˜์ƒ์ด blue_sunglasses์ด๋ฏ€๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด 5๊ฐœ์˜ ์กฐํ•ฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

          1. yellow_hat

          2. blue_sunglasses

          3. green_turban

          4. yellow_hat + blue_sunglasses

          5. green_turban + blue_sunglasses

 

์˜ˆ์ œ #2
face์— ํ•ด๋‹นํ•˜๋Š” ์˜์ƒ์ด crow_mask, blue_sunglasses, smoky_makeup์ด๋ฏ€๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด 3๊ฐœ์˜ ์กฐํ•ฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

          1. crow_mask

          2. blue_sunglasses

          3. smoky_makeup

 


 2. ์•Œ๊ณ ๋ฆฌ์ฆ˜ by Yoon 

(์˜์ƒ์˜ ์ข…๋ฅ˜๋ฅผ category๋ผ๊ณ  ์นญํ•จ)

     1. HahMap์— category์— ๋”ฐ๋ผ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค. (์žˆ์œผ๋ฉด +1, ์—†์œผ๋ฉด 1๋กœ ์„ธํŒ…)

     2. ๊ฐ (category๋ณ„ ๊ฐœ์ˆ˜ + 1)๋ฅผ ๋‹ค ๊ณฑํ•œ์—ฌ answer ๋ณ€์ˆ˜์— ์ €์žฅ

         ์„ ํƒํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ 0์ด๋ผ ๊ฐ€์ •ํ•ด์„œ ๊ฐœ์ˆ˜+1์„ ํ•ด์คฌ๋‹ค.

         ex) headgear๊ฐ€ 3๊ฐœ์ธ ๊ฒฝ์šฐ headgear๊ฐ€ ์„ ํƒ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊นŒ์ง€ ํฌํ•จ.

     3. ๋ชจ๋“  category๊ฐ€ ์„ ํƒ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ 2๋ฒˆ์—์„œ ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— answer-1


 3. ์†Œ์Šค์ฝ”๋“œ 

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 1, key = 0;
        Map<String, Integer> clothesMap = new HashMap<>();
        
        for(int i = 0; i < clothes.length; i++){
            int key = clothes[i][1];
            if(clothesMap.containsKey(key)){            // ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ
                clothesMap.put(key, clothesMap.get(key) + 1);
            }else clothesMap.put(key, 1);               // ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ 
        }
        
        Set<String> categories = clothesMap.keySet();
        for (String category : categories) {
            answer *= (clothesMap.get(category)+1);     // 0์ธ ๊ฒฝ์šฐ๊นŒ์ง€ ํฌํ•จํ•˜์—ฌ ๊ณ„์‚ฐํ•˜๊ณ 
        }
       
        return answer-1;                                // ๋ชจ๋“  category๊ฐ€ 0์ธ ๊ฒฝ์šฐ ์ œ์™ธ
    }
}

 4. ๋А๋‚€์  

์ฒ˜์Œ๋ถ€ํ„ฐ ์‰ฝ๊ฒŒ ๋– ์˜ฌ๋ž๋˜ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ตฌํ˜„ํ•ด๋‚ด๋Š” ๋ฐ์— ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ ์ด์œ ๋Š” HashMap ์‚ฌ์šฉ์— ์„œํˆด์–ด์„œ์˜€๋‹ค..

์•„์ฃผ ๊ฐ„๋‹จํ•œ keySet()๋„ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ๊ฒ€์ƒ‰์„ ํ–ˆ์—ˆ๋Š”๋ฐ, ๊ฐ„๋‹จํ•œ ๋ฉ”์„œ๋“œ ์ •๋„๋Š” ์ต์ˆ™ํ•  ๋งŒํผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ณ  ์™ธ์›Œ๋‘ฌ์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋˜ ํ•œ๊ฐ€์ง€ ์‹œ๊ฐ„์„ ๋นผ์•—๊ธด ๋ถ€๋ถ„์€ HashMap์—์„œ key๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ 1์ด ์•„๋‹Œ 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์ฃผ๋Š” ๋ถ€๋ถ„์„ ๋†“์น˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ์ด์—ˆ๋‹ค. ์š”์ฆ˜ ๊ณ„์† ์‚ฌ์†Œํ•œ ์‹ค์ˆ˜๋กœ๋ถ€ํ„ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค ใ…œ ใ…œ ..

 

 

 

 

[Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ]

๋‚ ์งœ: 2020.07.13

 

Comments