λ¬Έμ
λ¬Έμ λ§ν¬ https://www.acmicpc.net/problem/9375
- ν΄λΉμ΄λ ν¨μ μ λ§€μ° λ―Όκ°ν΄μ νλ² μ μλ μ·λ€μ μ‘°ν©μ μ λ λ€μ μ μ§ μλλ€.
- μλ₯Ό λ€μ΄ μ€λ ν΄λΉμ΄κ° μκ²½, μ½νΈ, μμ, μ λ°μ μ μλ€λ©΄, λ€μλ μ λ°μ§λ₯Ό μΆκ°λ‘ μ κ±°λ μκ²½λμ λ μ¦λ₯Ό μ°©μ©νκ±°λ ν΄μΌνλ€.
- ν΄λΉμ΄κ° κ°μ§ μμλ€μ΄ μ£Όμ΄μ‘μλ κ³Όμ° ν΄λΉμ΄λ μλͺΈμ΄ μλ μνλ‘ λ©°μΉ λμ λ°μ λμλ€λ μ μμκΉ?
- 첫째 μ€μ ν
μ€νΈ μΌμ΄μ€κ° μ£Όμ΄μ§λ€. ν
μ€νΈ μΌμ΄μ€λ μ΅λ 100μ΄λ€.
- κ° ν μ€νΈ μΌμ΄μ€μ 첫째 μ€μλ ν΄λΉμ΄κ° κ°μ§ μμμ μ n(0 ≤ n ≤ 30)μ΄ μ£Όμ΄μ§λ€.
- λ€μ nκ°μλ ν΄λΉμ΄κ° κ°μ§ μμμ μ΄λ¦κ³Ό μμμ μ’ λ₯κ° κ³΅λ°±μΌλ‘ ꡬλΆλμ΄ μ£Όμ΄μ§λ€.
- κ°μ μ’ λ₯μ μμμ νλλ§ μ μ μ μλ€.
- λͺ¨λ λ¬Έμμ΄μ 1μ΄μ 20μ΄νμ μνλ²³ μλ¬Έμλ‘ μ΄λ£¨μ΄μ ΈμμΌλ©° κ°μ μ΄λ¦μ κ°μ§ μμμ μ‘΄μ¬νμ§ μλλ€.
- κ° ν μ€νΈ μΌμ΄μ€μ λν΄ ν΄λΉμ΄κ° μλͺΈμ΄ μλ μνλ‘ μμμ μ μ μ μλ κ²½μ°λ₯Ό μΆλ ₯νμμ€.
μμ΄λμ΄
- hashmapμ μ¬μ©νμ¬ μ·μ μ’ λ₯λ₯Ό keyκ°μΌλ‘ λ°κ³ value κ°μΌλ‘λ ν΄λΉ keyκ°μ΄ κΈ°μ‘΄μ μμΌλ©΄ κΈ°μ‘΄μ μλ value κ°μ 1μ λν κ°μ μ μ₯νκ³ ν΄λΉ keyκ°μ΄ μλ€λ©΄ 1μ μ μ₯νλ€.
- κ·Έλ¦¬κ³ μ μ₯λ valueκ°λ€μ κ°μ§κ³ κ²°κ³Όκ°μ κ³μ°νλ€.
- κ²½μ°μ μλ₯Ό λͺ¨λ κ³±νλ©΄ λλλ°, valueκ°μ ν΄λΉ μ· μ’ λ₯κ° λͺκ° μλμ§ μ μ₯ν κ°μ΄λ―λ‘ κ·Έ value κ°μ 1μ λν κ°μ κ²°κ³Όκ°μ κ³μ κ³±ν΄μ€λ€. (1μ λνλ μ΄μ λ μ μ§ μλλ€λ μ νμ§λ μμΌλ―λ‘ κ²½μ°κ° 1 λν΄μ§κΈ° λλ¬Έμ΄λ€.)
- κ·Έλ κ² λͺ¨λ κ²½μ°μ μλ₯Ό κ³±ν΄μ£Όκ³ λ κ²°κ³Όκ°μ 1μ λΉΌμ€λ€. (1μ λΉΌμ£Όλ μ΄μ λ λͺ¨λ μ· μ’ λ₯λ₯Ό μ μ§ μλ κ²½μ°λ λΉΌμ€μΌ λκΈ° λλ¬Έμ΄λ€.)
κ²ͺμ μνμ°©μ€
- μ²μμλ κ²½μ°μ μλ‘ κ³μ°μ νλ€κ° 볡μ‘ν κΈΈλ‘ λΉ μ Έλ€κ³ λ§μλ€...
- μ‘°ν©μΌλ‘ ꡬνλ κ±΄κ° μΆμ΄μ μμ΄, μ€λ³΅ μμ΄, μ‘°ν©, μ€λ³΅ μ‘°ν©λ€μ μ°Ύμλ΄€μλ€.
- κ·Έλ κ² μ‘°ν©μΌλ‘ νλ€κ° μμ κ° ν΅κ³ΌλκΈΈλ μ μΆνλλ° νλ¦¬κ³ ... λ°λ‘λ€μ μ°Ύμμ μ½λλ₯Ό κ³ μ³€λλ° κ³μ νλ Έλ€...
- κ²°κ΅ μ½λλ₯Ό κ±°μ μ§μ°κ³ λ€μ κ²½μ°μ μλ‘ μ κ·Όν΄μ ν μ μμλ€.. γ γ
μ½λ
import java.io.*;
import java.util.*;
public class BOJ9375 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// ν
μ€νΈμΌμ΄μ€ κ°μ
int T = Integer.parseInt(br.readLine());
for(int test = 0; test < T; test++){
long n = Integer.parseInt(br.readLine());
// μ· μ’
λ₯λ₯Ό keyκ°μΌλ‘, μ· μ΄λ¦μ value κ°μΌλ‘ μ μ₯
HashMap<String, Integer> wear = new HashMap<>();
if(n == 0){
sb.append(0 + "\n");
}
else{
for(int i = 0; i < n; i++){
StringTokenizer st = new StringTokenizer(br.readLine());
// μ· μ΄λ¦
String name = st.nextToken();
// μ· μ’
λ₯
String type = st.nextToken();
// λ§μ½ hashmapμ μ
λ ₯λ°μ μ· μ’
λ₯λ₯Ό keyκ°μΌλ‘ κ°μ§κ³ μλ€λ©΄
// ν΄λΉ μ· μ’
λ₯κ° μ΄λ―Έ νλ²μ΄μ λ€μ΄μλ€λ κ²μ΄λ―λ‘
// κ·Έ μ· μ’
λ₯μ ν΄λΉνλ valueκ°μ 1λν΄μ μ μ₯
// hashmapμ keyκ°κ³Ό valueκ° μ μ₯
wear.put(type, wear.getOrDefault(type,0) + 1);
}
// κ²°κ³Όκ°μ μ μ₯ν λ³μ
int result = 1;
// hashmapμ μ μ₯λμ΄ μλ κ°λ€μ κ°μ§κ³ κ³μ°
for(int i : wear.values()){
// κ° μ· μ’
λ₯λ§λ€ κ°μ§ μ μλ κ²½μ°μ μλ₯Ό κ³±ν΄μ€
// κ° μ· μ’
μ λ§λ€ κ°μ§κ³ μλ μ·μ κ°μμ
// μ
μ§ μλλ€λ μ νμ§λ μμΌλ, κ°μμ + 1μ ν΄μ€
result = result * (i + 1);
}
// λͺ¨λ μ·μ μ
μ§ μμΌλ©΄ μλλ―λ‘
// λͺ¨λ μ
μ§ μλ κ²½μ°λ₯Ό λΊ
result = result - 1;
sb.append(result + "\n");
}
}
System.out.println(sb);
}
}
'μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] BOJ 11659 κ΅¬κ° ν© κ΅¬νκΈ° 4 (0) | 2024.07.29 |
---|---|
[Java] BOJ 9461 νλλ° μμ΄ (0) | 2024.07.28 |
[Java] BOJ 9095 1, 2, 3 λνκΈ° (0) | 2024.07.28 |
[Java] BOJ 2606 λ°μ΄λ¬μ€ (0) | 2024.07.27 |
[Java] BOJ 2579 κ³λ¨ μ€λ₯΄κΈ° (0) | 2024.07.27 |