유미의 기록들

[백준 1주차 - 9375] 패션왕 신해빈 (Java) 본문

코딩테스트 기록/알고리즘 문제

[백준 1주차 - 9375] 패션왕 신해빈 (Java)

지유미 2024. 2. 14. 08:49
728x90
반응형

 

📌 문제

 

 

📝 풀이 과정

위 문제는 의상의 이름과 종류를 입력하면 의상을 입을 수 있는 경우의 수를 구하는 문제이다

[예제 입력 1] 에서 의상의 종류는 2가지 이다. 같은 종류의 의상은 하나만 입을 수 있으므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses) 총 5가지의 경우의 수가 나온다

 

HashMap을 이용하여 의상의 종류와 개수를 세어 나타내도록 한다 (key 값은 의상의 종류이고 value값은 개수이다)

 

 

여기서 경우의 수 5가지를 어떻게 도출할 수 있을까?

 

입지 않는 경우를 추가하고 곱하면 모든 경우의 수가 나온다  ( 3 × 2 = 6가지)

그리고 x끼리의 경우 (즉, 아무것도 입지 않은 경우)를 빼면 된다  ( 6 - 1 = 5가지)

 

→ HashMap의 value값에서 +1한 값을 들고와서 곱한 다음 마지막으로 -1을 해준다

 

 

💻 코드

import java.util.*;
public class Main{
	public static void main(String[]args){
		Scanner scanner=new Scanner(System.in);
		
		HashMap<String,Integer> clothes=new HashMap<String,Integer>();
		int t,n,result=1;
		String name,kind;
		
		t=scanner.nextInt();
		for(int i=0;i<t;i++){
			result=1;
			clothes.clear();
			n=scanner.nextInt();
			for(int j=0;j<n;j++){
				name=scanner.next();
				kind=scanner.next();
				if(clothes.containsKey(kind)){
					int cnt=clothes.get(kind);
					cnt++;
					clothes.put(kind,cnt);
				}
				else{
					clothes.put(kind,1);
				}
			}
            
			for(int cnt:clothes.values()){
				result *= cnt+1;
			}
			System.out.println(result-1);
		}
	}
}
728x90
반응형
Comments