BOJ_S3_9375
π [S3_9375] ν¨μ μ μ ν΄λΉ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
// input start
int TC = Integer.parseInt(br.readLine());
for (int tc = 0; tc < TC; tc++) {
int N = Integer.parseInt(br.readLine());
// key κ°μ μμ μ’
λ₯, value κ°μ μλ‘λ€λ₯Έ μμ μ
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine(), " ");
// μμ μ΄λ¦
String wear = st.nextToken();
// μμ μ’
λ₯
String wear_title = st.nextToken();
// λ§μ½ mapμ key μ μμμ’
λ₯κ° μμλ
if (!map.containsKey(wear_title)) {
// keyλ₯Ό μμ±ν΄μ€λ€ , 1μ λ°μμ λν κ±°
map.put(wear_title, 0);
}
// value κ°μ 1μ λν΄μ λ체ν΄μ€λ€
map.replace(wear_title, map.get(wear_title) + 1);
}
// μ 체 mapμ λλ©΄μ ( value +1 ) μ© λ€ κ³±ν΄μ€λ€
int sum = 1;
for(Map.Entry<String, Integer> list : map.entrySet()) {
sum *= (list.getValue()+1);
}
// 1μ λΉΌμ€λ€
sum--;
sb.append(sum).append("\n");
}
System.out.println(sb);
}
}
π€ λμ μκ°
μ΄ λ¬Έμ κ° λλ₯Ό μμ©μλ€β¦ γ
γ
μ²μμλ Mapμ ν΅ν΄ Stringκ³Ό ArrayList
νμ΄λ μΌλ¨ Mapμ key κ°μ μμμ μ’ λ₯, value κ°μ μμμ μλ₯Ό μ μ₯νλ€. forλ¬Έμ λλ©΄μ μμμ μ’ λ₯κ° μ΄λ―Έ μλ κ²μ΄λ©΄ μλ κ²μ νλλ₯Ό λν΄μ£Όκ³ μμΌλ©΄ μλ‘μ΄ keyλ₯Ό λ§λ€μ΄ νλλ₯Ό λν΄μ€λ€. κ²°κ³Ό κ°μΌλ‘λ λͺ¨λ Mapμ λλ©΄μ value κ°μ νλλ₯Ό λνκ³ κ·Έ κ°λ€μ λ€ κ³±ν΄μ€λ€. κ·Έλ¦¬κ³ λ§μ§λ§μ -1μ ν΄μ£Όλ©΄ λλ€. μ¬κΈ°μ valueμ 1μ λν΄μ£Όλ κ²μ μ μ μ κ²½μ°λ₯Ό κ³ λ €νλ κ²μ΄κ³ λ§μ§λ§μ 1μ λΉΌμ£Όλ κ²μ λ€ μ μ μ κ²½μ°λ₯Ό κ³ λ €νλ κ²μ΄λ€.
μ΄ λ¬Έμ λ₯Ό ν΅ν΄μ 무쑰건 ꡬνμΌλ‘λ§ μκ°νμ§ λ§κ³ μνμ μΌλ‘λ μκ°ν΄λ³΄μκ³ λ€μ§μ νλ€ !!