Solved.ac Class3++
1차시도는 Combination을 이용해서 풀이를 시도했으나.
Combination의 종점에 도달 했을 때 어떻게 전달해야 하나를 고민하다 패스
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int testCase = Integer.parseInt(br.readLine());
for (int i = 0; i < testCase; i++) {
int wearSize = Integer.parseInt(br.readLine());
Map<String, Integer> item = new HashMap<>();
for (int j = 0; j < wearSize; j++) {
String[] data = br.readLine().split(" ");
item.put(data[1], item.getOrDefault(data[1], 0) + 1);
}
int multiply = 1;
for (Integer value : item.values()) {
multiply *= value + 1;
}
sb.append(multiply - 1).append("\n");
}
System.out.println(sb);
}
}
결국 gear의 개수 +1 을 한 뒤 모든 경우의 수를 곱하면, 아무것도 입지 않은 상태까지 포함한 모든 경우의 수가 나온다. 여기서 -1을 해서 해결(검색)
성공
fun main() {
val testCase = readln().toInt()
val sb = StringBuilder()
val p = Problem9375ToKotlin()
for (i in 0..<testCase) {
sb.append(p.solve()).append("\n")
}
print(sb)
}
class Problem9375ToKotlin {
fun solve(): Int {
val wearSize = readln().toInt()
val item = HashMap<String, Int>()
for (i in 0..<wearSize) {
val data = readln().split(" ")
item.put(data[1], item.getOrDefault(data[1], 0) + 1)
}
var multiply: Int = 1
for (i in item) {
multiply *= i.value + 1
}
return multiply - 1
}
}