[Java] 의상 경우의 수

정석·2024년 1월 18일

알고리즘 학습

목록 보기
7/67
post-thumbnail

💡 문제

🧑🏻‍💻 풀이

import java.util.HashMap;
import java.util.Map;

public class Solution {
  public int solution(String[][] clothes){
      int answer = 1;
      Map<String, Integer> map = new HashMap<String, Integer>();

      for(String[] cloth : clothes){
          map.put(cloth[1], map.getOrDefault(cloth[1], 0) + 1);
      }
      for (Integer value : map.values()){
          answer = answer * (value + 1);
      }
      return answer-1;
  }
}
  • 각 의상의 종류의 개수만큼 경우의 수가 달라지므로 종류의 개수와 각 종류마다 몇 개의 의상이 존재하는지 구하는지가 중요했다.
  • Map 을 활용하여 <의상의 종류, 개수> 와 같이 HashMap을 만들고 반복문을 통해 각 개수끼리 곱한 후 결과 값을 반환하였다.
  • 마지막에 모든 옷을 안 입는 경우의 수도 있기 때문에 -1을 추가로 해준다.
  • getOrDefault 를 활용했다. getOrDefault(값, 0) 값이 존재하지 않으면 0으로 초기화 한다. 존재한다면 현재 값을 유지한다. 이 후 +1을 하여 개수를 최신화 해준다.

    어려웠던 부분

  • 2차원 배열에서 String[] 과 같이 반복문을 통해 불러오면 1차원 배열로 순차적으로 접근하게 된다.
  • HashMap 에 대해 인지하고 있었지만 문제에 활용하기까지 떠오르지 않았다. 추가로 사용해 봐야겠다.

0개의 댓글