[프로그래머스] 위장_JAVA

2022. 2. 10. 18:41알고리즘/프로그래머스

반응형

문제 링크

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

 

코딩테스트 연습 - 위장

 

programmers.co.kr

 

문제를 읽고 파악하는 데 시간이 좀 들었던 녀석이다.

위장을 하는데 상,하의없이 모자만(?)입는 기행을 벌인다. (오히려 위장이 안 되지 않을까..?)

 

문제만 파악하면 풀이는 간단하다. 초등학교때 상의, 하의를 돌려입는 가짓 수 찾기를 떠올렸다.

해시 맵에 <의상 종류, 가짓 수> 로 넣는다. 예를 들어

상의a, 상의b, 하의, 신발a, 신발b 가 있다면

<상의, 2> <하의, 1> <신발, 2> 가 각 해시 맵에 들어있을 것이다.

다만 '최소' 한 가지 의상이라 했으니

상의a, 상의b, 상의를 입지 않음 <- 입지 않은 경우의 수도 넣어야 한다. 따라서

(상의)3 * (하의)2 * (신발)3 - 1(아무것도 입지 않은 경우) 이 답이 되는 셈

import java.util.*;
class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        HashMap<String, Integer> map = new HashMap<>();
        for (int i = 0; i < clothes.length; i++) {
            if (map.containsKey(clothes[i][1]))
            {
                int val = map.get(clothes[i][1]) + 1;
                map.put(clothes[i][1], val);
            }
            else
                map.put(clothes[i][1], 1);
        }
	    for(String key : map.keySet()) {
            answer *= map.get(key) + 1;
	    }
        
        return answer - 1;
    }
}

easy easy~~~