https://www.acmicpc.net/problem/9375
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Main {
static int TC, n;
static String[] clothe;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
TC = Integer.parseInt(br.readLine());
while (TC-- > 0) {
Map<String, Integer> map = new HashMap<>();
n = Integer.parseInt(br.readLine());
while (n-- > 0) {
clothe = br.readLine().split(" ");
if(map.containsKey(clothe[1])) {
map.put(clothe[1], map.get(clothe[1]) + 1);
continue;
}
map.put(clothe[1], 2); //안 입는 경우 + 하고 시작
}
sb.append(getSum(map)).append("\n");
}
System.out.print(sb);
}
private static int getSum(Map<String, Integer> map) {
int sum = 1;
for (int cnt : map.values()) {
sum *= cnt;
}
return sum - 1;
}
}
💡 맵, 중복 조합
풀이
- K가지 카테고리에서 1개씩 선택 가능 (or 선택 X)
- _ _ _ _ _ → 각 자리마다 카테고리에 속한 의상 개수 + 1(선택 안하는 경우)로 생각해서 중복 조합 생각
- 곱한 결과물 - 1한 값을 답으로 출력 (모두 안뽑는 경우 제외)
- <카테고리 이름 : 개수> 형식으로 개수 카운팅 해줌
'Algorithm > Beakjoon' 카테고리의 다른 글
[JAVA] 백준 9019번 : DSLR (0) | 2024.01.06 |
---|---|
[JAVA] 백준 14500번 : 테트로미노 (1) | 2024.01.03 |
[JAVA] 백준 11286번 : 절댓값 힙 (0) | 2024.01.02 |
[JAVA] 백준 7569번 : 토마토 (0) | 2024.01.02 |
[JAVA] 백준 18870번 : 좌표 압축 (0) | 2024.01.01 |