티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/42578?language=java

 

코딩테스트 연습 - 위장 | 프로그래머스

 

programmers.co.kr

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
 
    public int solution(String[][] clothes) {
        HashMap<String, Integer> clothNum = new HashMap<>();
        int answer = 1;
 
        for(String[] cloth : clothes) {
            if(clothNum.containsKey(cloth[1])) {        //Map에 옷 종류가 있을 경우
                clothNum.put(cloth[1], clothNum.get(cloth[1]) + 1);
            } else {                                    //Map에 옷 종류가 없을 경우
                clothNum.put(cloth[1], 1);
            }
        }
 
        for(String key : clothNum.keySet()) {
            answer *= clothNum.get(key) + 1;
        }
 
        return answer - 1;
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

옷의 종류를 A, B, C

세가지가 있다고 생각하고 A * B * C 할 경우 전부 다 입는 조건으로만 경우의 수가 구해진다.

A만 입거나 A,B만 입거나 할 경우를 어떻게 구해야할까 삽질하다가 (뇌에서 수학이 사라졌다...)

입지않는 경우를 추가해줌으로써 해결했다.

각 옷의 종류에 입지 않을 경우를 더하고 (A + 1, B + 1, C + 1)

전부 다 입지 않은 케이스인 하나의 경우를 -1 해서 끝!

댓글