[JAVA/프로그래머스] 해시_위장: 종류별로 카운트하기

👀 문제

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

👊 첫 번째 도전

1. 설계

  1. key는 의상의 종류(clothes[i][1]), value는 종류의 갯수를 가지는 해쉬맵을 선언한다.
  2. (의상종류A+1)x(B+1)x…x(N+1)-1이 answer이다. 이때 각 종류에 +1은 해당 의상 종류를 선택하지 않는 경우(null)이며, 마지막 -1은 모든 종류가 없는 경우(null)이다.

2. 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.HashMap;
/**
 *
 * @author HEESOO
 *
 */
class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        int temp;
        HashMap<String,Integer> map=new HashMap<>();
        for(int i=0;i<clothes.length;i++){
            if(!map.containsKey(clothes[i][1])){
                map.put(clothes[i][1],1);
            }
            else{
                temp=map.get(clothes[i][1]);
                map.replace(clothes[i][1],temp+1);
            }
        }
        for(String key:map.keySet()){
            answer*=map.get(key)+1;
        }
        answer--;
        return answer;
    }
}

3. 결과

실행결과 🤟 성공 🤟

👏 해결 완료!

map의 값을 변경할 때 replace를 사용하였는데, put 역시 replace와 같은 기능을 한다는 것을 기억해두자!