Baekjoon - 9375

Tadap·2023년 10월 16일
0

Baekjoon

목록 보기
55/94
post-custom-banner

문제

Solved.ac Class3++

1차시도

1차시도는 Combination을 이용해서 풀이를 시도했으나.
Combination의 종점에 도달 했을 때 어떻게 전달해야 하나를 고민하다 패스

2차시도

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을 해서 해결(검색)

성공

ToKotlin

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
    }
}

post-custom-banner

0개의 댓글