[프로그래머스|JAVA] 의상 | HashMap()

2025. 6. 18. 14:25💻코딩/💡Programmers

728x90
반응형

[문제 링크]

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 


 

 

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++){  
            map.compute(clothes[i][1], (key, oldValue) -> (oldValue == null? 2: oldValue + 1));
        }
        
        for(int i : map.values()){
            answer *= i;
        } 
    
        return answer - 1;
    }
}

[접근법]

  1. HashMap을 사용하여 <옷의 종류, 개수>를 저장한다.
    • map.compute() 함수를 사용하여
      1. 키 값이 존재하지 않을 때는 2 값을,  ➡️ 옷을 고르지 않고 다른 종류의 옷을 선택할 수 있으므로 +1한 2 값을 넣음.
      2. 존재하면 원래 값 +1을 하여 value 값을 넣는다.
  2. 각 개수를 곱한다 (조합)
  3. answer 값에 1을 빼고 반환한다. ➡️ 모든 옷을 고르지 않는 경우 빼줌

 

 


 

 

해시를 사용하는 것임을 알려줬기에 접근하기 쉬웠지만,

옷을 고르지 않고 다른 종류의 옷을 선택하는 경우, 모든 옷을 고르지 않는 경우 등

다양한 경우를 생각하지 못해서 여러 시도가 필요했던 것 같다.

 

추가로 map.compute() 함수를 처음 사용해봤고, 람다식을 오랜만에 사용한 것 같다.

이번 기회에 배운 HashMap의 map.compute()에 대해서도 포스팅 하도록 하겠다.

 

 

 

 

728x90
반응형