문제

https://school.programmers.co.kr/learn/courses/30/lessons/42578

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

문제 접근

  • 해시맵을 사용하는 문제이지만 기본적으론 경우의 수를 구하는 문제이다.
  • 만약 얼굴을 동그란 안경, 검정 선글라스로 상의를 파란색 티셔츠, 하의를 청바지, 겉옷을 긴 코트로 한다면 해당 부위를 입지 않는 경우의 수까지 포함하여 곱의 경우의 수를 계산해야 한다.
  • 그렇다면 동그란 안경 - 파란색 티셔츠 - 청바지 - 겉옷, 동그란 안경 - 파란색 티셔츠 - 없음 - 겉옷 등으로 경우의 수들이 나타나는데 문제의 제약조건에서 최소한 하나의 옷은 입기 때문에 모든 옷을 입지 않는다는 경우의 수는 뺌으로서 전체적인 경우의 수를 구할 수 있다.
import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        
        HashMap<String, Integer> map = new HashMap<>();
        for(String[] row: clothes){
            map.put(row[1], map.getOrDefault(row[1], 0) + 1);
        }
        
        for(String key: map.keySet()){
            answer *= (map.get(key) + 1);
        }
        
        return answer - 1;
    }
}
  • 해시맵은 key로 부위를 지정하여 해당 부위의 요소가 몇 개가 존재하는지를 저장하는 자료구조로 활용되었다.

'DataStructure > Hash, map, set' 카테고리의 다른 글

HashMap의 원리와 설명  (1) 2023.03.16
BOJ 26008 해시해킹  (0) 2023.03.16
Programmers - 압축  (0) 2023.03.14
Hash, map의 문제 유형 탐구  (0) 2022.11.23
복사했습니다!