해시맵을 이용해서 문제를 해결할 수 있습니다.
의상의 종류와 개수를 해시맵에 저장합니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(bufferedReader.readLine());
for(int i = 0; i < T; i++){
HashMap<String, Integer> hashMap = new HashMap<>();
int n = Integer.parseInt(bufferedReader.readLine());
for(int j = 0; j < n; j++){
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
String name = stringTokenizer.nextToken();
String type = stringTokenizer.nextToken();
hashMap.put(type, hashMap.getOrDefault(type, 0) + 1);
}
int result = 1;
for(int val: hashMap.values())
result *= (val + 1);
System.out.println(result - 1);
}
}
}
getOrDefault를 사용하여 기존 값이 없으면 0을 반환하고, 있으면 기존 값에 1을 더합니다.
각 의상의 종류별로 (해당 의상 수 + 1)을 곱하고 전체 결과에서 모든 종류의 의상을 입지 않는 경우를 제외하기 위해 1을 뺍니다.
.
.
.
문제는 아래에서 확인할 수 있습니다.
https://www.acmicpc.net/problem/9375
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준_JAVA_알고리즘] 9461 파도반 수열 #DP (2) | 2025.01.06 |
---|---|
[백준_JAVA_알고리즘] 17626 Four Squares #DP (0) | 2025.01.04 |
[백준_JAVA_알고리즘] 1920 수 찾기 #해시 (1) | 2024.12.27 |
[백준_JAVA_알고리즘] 1302 베스트셀러 #해시 (2) | 2024.12.27 |
[백준_JAVA_알고리즘] 11000 강의실 배정 #힙 #우선순위 큐 (0) | 2024.12.23 |