Home 프로그래머스(위장)
Post
Cancel

프로그래머스(위장)

첫 시도

  • 이 문제에서 어떤 의상인지는 중요 x, 의상의 종류가 핵심
  • 의상의 종류를 key로, 종류의 개수를 value로 하는 map 생성
  • 의상의 조합을 구하는 것이므로 map의 value를 다 곱해준다 -> 이때 의상의 종류 중 해당 종류의 의상을 안입는 다는 선택지도 있기 때문에 value + 1을 해준다
  • 최소 옷을 1개는 입어야한다는 조건이 있으므로 아무것도 입지 않는 조건을 빼줘야함 -> answer - 1
  • 가지고 있는 의상의 수를 N이라고 했을 떄 시간복잡도는 2N, O(N)이다

해결

  • 내용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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++){
            String type = clothes[i][1];
            map.put(type,map.getOrDefault(type,0)+1);
        }

        Iterator<Integer> it = map.values().iterator();
        while (it.hasNext()){
            answer *= it.next().intValue()+1;

        }
        return answer - 1;
    }
}

참고

This post is licensed under CC BY 4.0 by the author.