💡Problem Solving/BOJ

[BOJ 9375] 패션왕 신해빈 (Java)

gom20 2021. 11. 11. 12:32

문제

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

 

9375번: 패션왕 신해빈

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

www.acmicpc.net

 

풀이

예시 1)
hat headgear
sunglasses eyewear
turban headgear

 

headgear의 경우의 수: 3 (hat을 쓴다, turban을 쓴다, 안 쓴다)

eyewear의 경우의 수: 2 (sunglasses를 쓴다, 안 쓴다)

3*2 = 6

모두 안쓸 경우 알몸이므로 알몸의 경우의 수를 빼준다.

6-1 = 5

 

즉 각 (의상 종류 + 1) 모두 곱한 후 -1을 해주면 답을 구할 수 있다. 


예시 2)
mask face
sunglasses face
makeup face

 

face의 경우의 수: 4 (mask를 쓴다, sunglasses를 쓴다, makeup을 한다, 다 안한다)

다 안할 경우 알몸이 되므로 -1을 하면 답은 3이다. 


예시 3)
mask face
sunglasses eyewear
makeup headgear

 

face: 2, eyewear: 2, makeup: 2

다 곱해준 후 -1 = 7

 

소스코드

package math;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.StringTokenizer;

public class BOJ9375 {

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = null;
        int T = Integer.parseInt(br.readLine());
        for(int i = 0; i < T; i++){
            HashMap<String, Integer> map = new HashMap<String, Integer>();
            int N = Integer.parseInt(br.readLine());

            for(int j = 0; j < N; j++){
                st = new StringTokenizer(br.readLine());
                st.nextToken();
                String key = st.nextToken();
                map.put(key, map.getOrDefault(key, 0) +1);
            }

            int cnt = 1;
            for(String key : map.keySet()){
                cnt *= (map.get(key) + 1);
            }
            bw.write((cnt-1) + "\n");
        }
        bw.flush();
    }
}

'💡Problem Solving > BOJ' 카테고리의 다른 글

[BOJ 11286] 절댓값 힙 (Java)  (0) 2021.11.12
[BOJ 1927] 최소 힙 (Java)  (0) 2021.11.12
[BOJ 3036] 링 (Java)  (0) 2021.11.11
[BOJ 1037] 약수 (Java)  (0) 2021.11.11
[BOJ 13305] 주유소 (Java)  (0) 2021.11.11