728x90
 

9375번: 패션왕 신해빈

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

www.acmicpc.net

문제

해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 렌즈를 착용하거나 해야 한다. 해빈이가 가진 의상들이 주어졌을 때 과연 해빈이는 알몸이 아닌 상태로 며칠 동안 밖에 돌아다닐 수 있을까?

풀이

경우의 수를 구하는 문제이다. 구하는 방법은 어렵지 않다.

만약 상의 A, B, C와 하의 a, b, c가 있다고 하면 알몸이 아닌 상태로 옷을 입는 경우의 수는 15가지이다.

상의를 입는 경우의 수 : A를 입는 경우, B를 입는 경우, C를 입는 경우, 입지 않는 경우 -> 4가지

하의를 입는 경우의 수 : a를 입는 경우, b를 입는 경우, c를 입는 경우, 입지 않는 경우 -> 4가지

 

총 4 * 4 = 16가지에서 둘 다 입지 않는 경우 1가지를 빼면 된다.

아래 코드는 위 방법을 코드로 작성한 것이다.

 

필자는 HashMap과, 배열을 이용해 보았다.

코드

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 br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();

        int T = Integer.parseInt(br.readLine());
        for(int i = 0; i < T; i++) {
            int N = Integer.parseInt(br.readLine());
            HashMap<String, Integer> wear = new HashMap<>();
            int[] count = new int[N];
            int num = 0;
            for (int j = 0; j < N; j++) {
                st = new StringTokenizer(br.readLine());
                st.nextToken();
                String kind = st.nextToken();
                if (wear.containsKey(kind)) count[wear.get(kind)]++;
                else {
                    wear.put(kind, num);
                    count[num++] = 2;
                }
            }
            int result = 1;
            for (int j = 0; j < num; j++) {
                result *= count[j];
            }
            sb.append(result - 1).append("\n");
        }
        System.out.println(sb);
    }
}

틀린 부분이 있다면 정정해주시면 감사하겠습니다.
궁금한 부분이 있거나, 다른 아이디어가 있으시면 자유롭게 댓글 남겨주세요!

728x90

+ Recent posts