본문 바로가기
휴지통/알고리즘 & 자료구조

백준 9375

by 신재권 2022. 2. 6.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;

public class Main9375 {

	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int T = Integer.parseInt(br.readLine()); // 테스트 갯수 
		StringTokenizer st;
		while(T-- > 0) {
			int n = Integer.parseInt(br.readLine()); // 옷 개수 
			
			HashMap<String, Integer> map = new HashMap<>();
			
			for(int i=0; i<n; i++) {
				st = new StringTokenizer(br.readLine());
				st.nextToken();
				String s = st.nextToken();
				if(map.containsKey(s)) { //이미 있다면 
					map.put(s, map.get(s)+1);
				}else { //첫 종류라면 
					map.put(s, 1);
				}
			}
			
			//a1 a2 b 2가지 종류, 3개 
			// 한번씩 입는 법 : a1 a2 b -> 3가지 
			// 조합해서 입는법 : a1b a2b -> 2가지 
			// 가상의 경우의수를 추가한다. (안입는 경우의수 ) 
			// 한번씩 입는 방법은 안입는 경우랑 매칭한 것이다.
			// 즉 (a1,a2) -> 	2가지++ -> 3가지
			// (b) -> 1가지++ -> 2가지 
			//3x2 =6 - (아예안입는 경우의수) = 6-1 = 5
			
			long answer = 1;
			for(String a : map.keySet()) {
				answer *= (map.get(a)+1);
			}
			answer--;
			System.out.println(answer);
		}
		
	}
	
	
	
}

 

'휴지통 > 알고리즘 & 자료구조' 카테고리의 다른 글

백준 1940  (0) 2022.02.08
백준 1213  (0) 2022.02.07
백준 1620  (0) 2022.02.05
백준 2559_1  (0) 2022.02.04
백준 9996  (0) 2022.02.03