알고리즘/BOJ

[BOJ] 9375. 패션왕 신해빈

재담 2022. 4. 2. 02:40

문제 원본 : https://www.acmicpc.net/problem/9375

 

9375번: 패션왕 신해빈

첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로   (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.

www.acmicpc.net

import java.io.*;
import java.util.Hashtable;
import java.util.Map;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int t = Integer.parseInt(br.readLine());

        int n, ans;
        String kind;
        Hashtable<String, Integer> hashtable;
        StringBuilder builder = new StringBuilder();

        while (t-- > 0) {
            n = Integer.parseInt(br.readLine());
            ans = 1;
            hashtable = new Hashtable<>();

            for (int i = 0; i < n; ++i) {
                kind = br.readLine().split(" ")[1];
                if (hashtable.get(kind) == null) {
                    hashtable.put(kind, 1);
                } else {
                    hashtable.put(kind, hashtable.get(kind) + 1);
                }
            }

            for (Map.Entry<String, Integer> entry : hashtable.entrySet()) {
                ans *= (entry.getValue() + 1);
            }

            builder.append(ans - 1).append("\n");
        }

        bw.write(builder.toString());

        bw.close();
        br.close();
    }
}
  • 경우의 수 문제
  • 의상 종류의 개수만 파악하면 된다.
  • 해당 의상을 안 입는 경우가 있으므로 1을 더해서 전부 곱해준다.
  • 알몸이 되면 안 되므로 1을 빼준다.