본문 바로가기

Algorithm/Baekjoon

[백준_JAVA_알고리즘] 9375 패션왕 신해빈 #해시

 

해시맵을 이용해서 문제를 해결할 수 있습니다. 

의상의 종류와 개수를 해시맵에 저장합니다.

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(bufferedReader.readLine());

        for(int i = 0; i < T; i++){
            HashMap<String, Integer> hashMap = new HashMap<>();
            int n = Integer.parseInt(bufferedReader.readLine());

            for(int j = 0; j < n; j++){
            StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                String name = stringTokenizer.nextToken();
                String type = stringTokenizer.nextToken();
                hashMap.put(type, hashMap.getOrDefault(type, 0) + 1);
            }

            int result = 1;
            for(int val: hashMap.values())
                result *= (val + 1);
            System.out.println(result - 1);
        }
    }
}

 

getOrDefault를 사용하여 기존 값이 없으면 0을 반환하고, 있으면 기존 값에 1을 더합니다.

각 의상의 종류별로 (해당 의상 수 + 1)을 곱하고 전체 결과에서 모든 종류의 의상을 입지 않는 경우를 제외하기 위해 1을 뺍니다.

 

.

.

.

 

문제는 아래에서 확인할 수 있습니다.

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