코딩테스트/백준

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

GAEBAL 2022. 6. 5. 00:18
728x90

문제

https://www.acmicpc.net/problem/9375

 

9375번: 패션왕 신해빈

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

www.acmicpc.net

 

 

풀이

프로그래머스에서도 비슷한 문제를 풀었던 것 같다!

 

포인트는

맵을 이용해서 같은 종류의 옷이면 갯수를 증가시켜주어야 한다는 것 (HashMap.put(key, HashMap.getOrDefault(key, 0) + 1) 얘를 잘 알아놓자!)
마지막에 옷의 종류가 한가지일 경우와 한가지 이상일 경우를 다르게 계산해야 한다는 것

 

자세한건 주석으로!

 

 

코드

// 9375번 패션왕 신해빈
// https://www.acmicpc.net/problem/9375

package BAEKJOON;

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

public class Num9375_패션왕신해빈 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

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

        for (int t = 0; t < T; t++) {
            int n = Integer.parseInt(br.readLine());

            HashMap<String, Integer> hashMap = new HashMap<String, Integer>();

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

                String value = st.nextToken(); // 무슨 옷인지는 안 중요함. 그냥 받아놓고 안쓸거임
                String key = st.nextToken(); // 어떤 종류의 옷인지
                hashMap.put(key, hashMap.getOrDefault(key, 0) + 1); // 맵에 put하고 없으면 1, 있으면 +1
            }

            if (hashMap.size() == 1) { // 종류가 한가지면 그 종류의 옷이 몇개 있는지 출력
                for (int num : hashMap.values()) {
                    System.out.println(num);
                }
            } else { // 종류가 두 가지 이상이면
                int answer = 1;
                for (int num : hashMap.values()) {
                    answer *= ++num;
                }
                answer--;
                System.out.println(answer);
            }
        }
    }
}

 

728x90