[PGS] 의상 - JAVA

최영환·2023년 8월 5일
0

Programmers

목록 보기
16/43
post-thumbnail

💡 문제

💬 입출력 예시

📌 풀이(소스코드)

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;

        Map<String, Integer> map = new HashMap<>();
        for (String[] strings :clothes){
            map.put(strings[1], map.getOrDefault(strings[1], 0) + 1);
        }

        for (String key : map.keySet()) {
            answer *= map.get(key) + 1;
        }
        answer--;

        return answer;
    }
}

📄 해설

접근

  • 백트래킹으로 열심히 조합 구해서 해야겠다 라는 접근을 했다.
  • 시간만 야무지게 사용해버렸다.
  • 다른 분들의 코드를 보니, 간단한 공식이 있었고, 아래와 같다.
    • (의상 종류별 의상의 수 + 1) 의 거듭제곱을 구하고, 1을 빼준다.

과정

  • 의상의 종류를 key 로 갖고, 해당 종류의 의상의 개수를 value 로 갖는 HashMap 을 생성한다. (같은 이름을 가진 의상이 존재하지 않으므로, 의상의 종류만 확인하면 된다.)
  • 모든 의상 종류에 대해, 의상 종류별 개수 + 1 을 answer 에 곱해준다.
  • answer 에서 1 을 빼주면 정답이 구해진다.
    • 이때, 1을 빼주는 이유?
      의상 종류별 개수 + 1 은 입지 않은 경우를 포함하는데, 최소 한 개의 의상은 입어야하므로, 모두 입지 않은 경우를 빼주어야 한다.
profile
조금 느릴게요~

0개의 댓글