728x90
문제
https://www.acmicpc.net/problem/9375
풀이
프로그래머스에서도 비슷한 문제를 풀었던 것 같다!
포인트는
맵을 이용해서 같은 종류의 옷이면 갯수를 증가시켜주어야 한다는 것 (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