HashMap에서 입력받은 Key가 존재하는지 확인하고, HashMap 전체를 탐색하는 방법
https://www.acmicpc.net/problem/9375
의상의 이름은 사실 필요없는 값이다. 종류별 몇 개가 있는지만 기록하고, 각 종류별 부분집합을 구하는 문제인데 모든 종류의 옷을 입지 않아도 되기 때문에 각 종류별로 0 즉, 입지 않는 경우의 수를 포함하여 곱해주면 모든 경우의 수를 구할 수 있다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
InputStreamReader reader = new InputStreamReader(in);
BufferedReader br = new BufferedReader(reader);
int t=Integer.parseInt(br.readLine());
for(int i=0;i<t;i++){
int ans=1;
HashMap<String, Integer> kind = new HashMap<>();
int n = Integer.parseInt(br.readLine());
for(int j=0;j<n;j++) {
String[] input = br.readLine().split(" ");
if (!kind.containsKey(input[1])) {
kind.put(input[1], 1);
} else {
kind.put(input[1], kind.get(input[1]) + 1);
}
}
for (Map.Entry<String, Integer> item : kind.entrySet()) {
ans*=(item.getValue()+1); // 해당 종류의 옷을 입지 않는 경우를 고려하기 위해 +1 해줌.
}
System.out.println(ans - 1);
}
}
}
반응형
'Study > JAVA' 카테고리의 다른 글
[백준 1764] HashSet - contains, sort (0) | 2022.11.24 |
---|