[Java] 백준 9375번 - 패션왕 김해빈

2024. 4. 23. 10:42·백준

문제 링크 : 백준 9375번 - 패션왕 김해빈

 

조합을 구하는 문제다.

 

의상이 종류별로 주어지는 것에 유의하여 종류별 의상의 개수를 구해준 후 조합의 경우의 수를 계산하면 된다.

 

예를 들어

hat adidas

hat bojhat

top thisisneverthat

 

이라는 의상이 들어온다면, 경우의 수는

(hat X) thisisneverthat

adidas (top X)

bojhat (top X)

adidas thisisneverthat

bojhat thisisneverthat

총 5가지다.

 

(hat 종류의 의상 수 + 1) * (top 종류의 의상 수 + 1) - 1 의 공식을 적용해주면 된다.

+1을 더해주는 이유는 해당 종류의 의상을 착용하지 않을 경우를 계산하기 위함이며, 마지막으로 -1을 빼주는 이유는 모든 종류의 의상을 착용하는 경우도 계산되었지만 문제에서 그런 경우는 없으므로 제외해준다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;

public class P9375 {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int testcase = Integer.parseInt(br.readLine());
        for (int i = 0; i < testcase; i++) {
            int N = Integer.parseInt(br.readLine());
            if (N == 0) {
                System.out.println("0");
                continue;
            }

            // Map을 이용해 조합 계산을 위한 의상 종류별 개수를 계산한다.
            HashMap<String, Integer> hashMap = new HashMap<>();
            for (int j = 0; j < N; j++) {
                String[] input = br.readLine().split(" ");
                String type = input[1];
                // 옷을 안 입는 경우까지 2가지 경우를 계산해야 하므로, 개수를 2개로 해준다.

                // 해당 종류의 의상을 처음 map에 넣는 경우
                if (!hashMap.containsKey(type)) hashMap.put(type, 2);
                // 해당 종류의 의상이 이미 map에 있다면, 개수를 1개 더해준다.
                else hashMap.put(type, hashMap.get(type) + 1);
            }
            int mul = 1;
            for (int n : hashMap.values()) {
                mul *= n;
            }
            // 모두 안 입는 경우인 1을 빼준다
            System.out.println(mul - 1);
        }
    }
}

'백준' 카테고리의 다른 글

[Java] 백준 1158번 - 요세푸스 문제  (0) 2024.04.23
[Java] 백준 17626번 - Four Squares  (0) 2024.04.23
[Java] 백준 2630번 - 색종이 만들기  (0) 2024.04.23
[Java] 백준 1735번 - 분수 합  (0) 2023.07.28
유클리드 호제법을 이용한 최소공배수 구하기  (0) 2023.07.28
'백준' 카테고리의 다른 글
  • [Java] 백준 1158번 - 요세푸스 문제
  • [Java] 백준 17626번 - Four Squares
  • [Java] 백준 2630번 - 색종이 만들기
  • [Java] 백준 1735번 - 분수 합
효재감자
효재감자
  • 효재감자
    효재감자의 우당탕탕 개발일지
    효재감자
  • 전체
    오늘
    어제
    • 분류 전체보기 (73)
      • 아무거나 (3)
      • 백준 (44)
      • 알고리즘 (4)
      • 자바 (1)
      • 리눅스(우분투) 및 클라우드 (2)
      • 스프링 (14)
        • 스프링 시큐리티 인 액션 (도서 정리) (5)
      • 플러터(Dart) (0)
  • 블로그 메뉴

    • 홈
    • Github
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
효재감자
[Java] 백준 9375번 - 패션왕 김해빈
상단으로

티스토리툴바