๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

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

by ์ฃผ๋ฐœ2 2020. 3. 6.
๋ฐ˜์‘ํ˜•

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

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์œ„์žฅ | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

 

programmers.co.kr

์ฝ”๋“œ

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        int answer = 1;
        
        for(int i=0; i<clothes.length; i++){
            // ํ˜„์žฌ ์˜์ƒ์˜ ์ข…๋ฅ˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด 1๊ฐœ ๋„ฃ๊ณ , ์กด์žฌํ•˜๋ฉด +1
            if(map.get(clothes[i][1]) == null)  map.put(clothes[i][1], 1);
            else    map.put(clothes[i][1], map.get(clothes[i][1]) + 1);
        }
        
        for(String keys : map.keySet())
            answer *= (map.get(keys) + 1);
        
        return answer-1;
    }
}

ํ’€์ด

์ž๋ฐ”์˜ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์ค‘ List์— ๋Œ€ํ•ด์„  ์–ด๋Š์ •๋„ ์‚ฌ์šฉ์€ ํ•ด๋ณด์•˜์ง€๋งŒ, Map์— ๋Œ€ํ•ด์„  ๊ฑฐ์˜ ๋ฌด์ง€ํ•ด์„œ ํ•ด์‹œ์— ๋Œ€ํ•ด ์–ด๋Š์ •๋„ ๊ณต๋ถ€๋ฅผ ํ•ด์•ผ ํ•  ๊ฒƒ๋„ ๊ฐ™์•˜๊ณ , ์ตœ๊ทผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€๋ฉด ํ•ด์‹œ๋งต์„ ์‚ฌ์šฉํ–ˆ์„๋•Œ, ์‚ฌ์šฉํ•ด์•ผํ•  ๋•Œ ํ’€๋ฆฌ๋Š” ๋ฌธ์ œ๋“ค๋„ ์–ด๋Š์ •๋„ ์กด์žฌํ•ด์„œ ๊ณต๋ถ€ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์„œ ํ’€์–ด๋ณด์•˜๋‹ค...(๋ฌผ๋ก  ์ง์ ‘ ํ’€์ง„ ๋ชปํ–ˆ๋‹ค .. ใ…Žใ…Ž)

 

์ด ๋ฌธ์ œ์—์„œ ํ•„์š”ํ•œ ๊ฒƒ์€ ์˜ท์˜ ์ด๋ฆ„์ด ์•„๋‹Œ ์˜ท ์ข…๋ฅ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ช‡๊ฐœ ์กด์žฌํ•˜๋Š๋ƒ์ด๋‹ค.

{์˜ท ์ข…๋ฅ˜} : {์ด ๊ฐฏ์ˆ˜} ์™€ ๊ฐ™์ด Key : Value ํ˜•ํƒœ์™€ ๋น„์Šทํ•œ ๊ตฌ์กฐ์ด๋‹ค.

์™œ ? ๊ฒฝ์šฐ์˜์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€๊ธฐ ์œ„ํ•ด์„  ์ด ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ „๋ถ€๋‹ค..

๊ทธ๋Ÿผ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌํ•˜๋Š”์ง€ ๋ณด์ž.

์ž…์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ๊ฐ ์˜ท์˜ ์ข…๋ฅ˜ +1 ์„ ๋ชจ๋‘ ๊ณฑํ•œ ๋’ค -1 ์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๊ฐ ์ข…๋ฅ˜์˜ ์˜ท๋“ค์€ ๋ชจ๋‘ ์ž…๊ฑฐ๋‚˜ ์•ˆ์ž…๊ฑฐ๋‚˜ 2๊ฐ€์ง€์˜ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, +1์”ฉ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ์˜ˆ์ œ์—์„œ ์ฒ˜๋Ÿผ ์˜ท์˜ ์ข…๋ฅ˜๊ฐ€ "headgear" , "eyewear" ์˜ 2์ข…๋ฅ˜๊ฐ€ ์žˆ๊ณ , ์˜์ƒ์€ ๊ฐ๊ฐ 2๊ฐœ, 1๊ฐœ๊ฐ€ ์žˆ๋‹ค๋ฉด

(2+1) * (1+1) - 1 = 5 ๊ฐ€ ์ •๋‹ต์ด ๋œ๋‹ค.

 

์˜ท์„ ํ•˜๋‚˜๋„ ์ž…์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์ƒ๊ธฐ๋ฏ€๋กœ -1์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€