문제
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
옷을 조합해서 입으려고 하는데 종류마다 의상이 있다. 의상을 한개의 종류 이상으로 1개 입으면 서로 다른 코디이다.
서로 다른 코디를 만들 수 있는 종류의 수를 구하는 문제이다.
이 문제의 풀이를 생각하다보면, 입지 않는 경우의 수에 대해서 어떻게 생각을 하지?라는 의문점이 든다.
각 종류마다 "입지 않음"이라는 의상이 하나 더 있다고 치면 풀이가 쉬워진다.
입지 않음의 의상을 추가하고 모든 종류의 의상을 입지 않음의 경우의 수만 제거하면 되지 않을까?라는 생각이 든다. 그러면 한개의 의상은 무조건 입었다고 말할 수 있다.
1. HashMap을 통해 종류마다 의상의 수를 센다.
2. 종류마다 의상의 수에서 + 1을 한 값을 모두 곱해준다.
3. 곱한 값 - 1(모두 입지 않은 경우의 수)를 리턴한다.
소스코드
import java.util.HashMap;
class Solution {
public int solution(String[][] clothes) {
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < clothes.length; i++) {
String key = clothes[i][1];
map.put(key, map.getOrDefault(key, 0) + 1);
}
int answer = 1;
for (String key : map.keySet()) {
answer *= (map.get(key) + 1);
}
return answer - 1;
}
}
실행결과

'Problem Solving > Programmers' 카테고리의 다른 글
| [Programmers] 없는 숫자 더하기 - Java (0) | 2025.08.19 |
|---|---|
| [Programmers] x만큼 간격이 있는 n개의 숫자 - Java (0) | 2025.08.18 |
| [Programmers] 수박수박수박수박수박수? - Java (2) | 2025.08.15 |
| [Programmers] 신고 결과 받기 - Java (0) | 2025.08.14 |
| [Programmers] 입국심사 - Java (0) | 2025.08.13 |