delpho

[실버3, 조합] 백준 9375 - 패션왕 신해빈 (자바) 본문

알고리즘/조합

[실버3, 조합] 백준 9375 - 패션왕 신해빈 (자바)

delpho 2024. 2. 27. 17:27

Think

1. Map을 활용해서 문제 푸는 아이디어는 어렵지 않았음.

2. 종류별 개수로 경우의 수를 도출하는 계산식을 잘 고려해야함 ( 종류별 개수 + 1을 모두 곱한 후 (-1) 해주어야함 )

  • 종류별 개수 + 1을 하는 이유는, 옷을 안 입는 경우도 있기 때문
  • 마지막에 -1을 하는 이유는, 옷을 모두 안 입는 경우는 없기 때문

 

 

 

 

제출 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    static int N, M, map[][], white, blue;
    static Map<String, Integer> m = new HashMap<>();

    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StringTokenizer st;

    public static void main(String[] args) throws IOException {
        init();
    }

    private static void process() {
        int multiplyCount = 1;

        for (Map.Entry<String, Integer> entry : m.entrySet()){
            int v = entry.getValue();

            multiplyCount *= v+1;
        }
        System.out.println(multiplyCount-1);
    }


    public static void init() throws IOException {
        N = Integer.parseInt(br.readLine());

        for (int i = 0; i < N; i++) {
            M = Integer.parseInt(br.readLine());

            for (int j = 0; j < M; j++) {
                st = new StringTokenizer(br.readLine());

				//해당 문자열은 필요 없음
                st.nextToken();
                String type = st.nextToken();

                m.put(type, m.getOrDefault(type, 0) + 1);
            }
            process();

            m.clear();
        }
    }
}