Hashing λΆλΆ μ±κ³΅μλΈνμ€ν¬
1 μ΄ | 512 MB | 32492 | 10101 | 8685 | 30.995% |
λ¬Έμ
APCμ μ¨ κ²μ νμνλ€. λ§μ½ μ¬λ¬λΆμ΄ νκ΅μμ μλ£κ΅¬μ‘°λ₯Ό μκ°νλ€λ©΄ ν΄μ ν¨μμ λν΄ λ°°μ μ κ²μ΄λ€. ν΄μ ν¨μλ μμμ κΈΈμ΄μ μ λ ₯μ λ°μμ κ³ μ λ κΈΈμ΄μ μΆλ ₯μ λ΄λ³΄λ΄λ ν¨μλ‘ μ μνλ€. ν΄μ ν¨μλ 무κΆλ¬΄μ§ν μμ© λΆμΌλ₯Ό κ°λλ°, λνμ μΌλ‘ μλ£μ μ μ₯κ³Ό νμμ μ°μΈλ€.
μ΄ λ¬Έμ μμλ μ¬λ¬λΆμ΄ μμΌλ‘ μ μ©νκ² μΈ μ μλ ν΄μ ν¨μλ₯Ό νλ κ°λ₯΄μ³μ£Όκ³ μ νλ€. λ¨Όμ , νΈμμ μ λ ₯μΌλ‘ λ€μ΄μ€λ λ¬Έμμ΄μλ μλ¬Έ μλ¬Έμ(a, b, ..., z)λ‘λ§ κ΅¬μ±λμ΄μλ€κ³ κ°μ νμ. μμ΄μλ μ΄ 26κ°μ μνλ²³μ΄ μ‘΄μ¬νλ―λ‘ aμλ 1, bμλ 2, cμλ 3, ..., zμλ 26μΌλ‘ κ³ μ ν λ²νΈλ₯Ό λΆμ¬ν μ μλ€. κ²°κ³Όμ μΌλ‘ μ°λ¦¬λ νλμ λ¬Έμμ΄μ μμ΄λ‘ λ³νν μ μλ€. μλ₯Ό λ€μ΄μ λ¬Έμμ΄ "abba"μ μμ΄ 1, 2, 2, 1λ‘ λνλΌ μ μλ€.
ν΄μ κ°μ κ³μ°νκΈ° μν΄μ μ°λ¦¬λ λ¬Έμμ΄ νΉμ μμ΄μ νλμ μ μλ‘ μΉννλ €κ³ νλ€. κ°λ¨νκ²λ μμ΄μ κ°μ λͺ¨λ λν μλ μλ€. ν΄μ ν¨μμ μ μμμ μ νν λ²μμ μΆλ ₯μ κ°μ ΈμΌ νλ€κ³ νμΌλκΉ μ λΉν ν° μ MμΌλ‘ λλ μ£Όμ. μ§μ! ν΄μ ν¨μκ° μμ±λμλ€. μ΄λ₯Ό μμμΌλ‘ νννλ©΄ μλμ κ°λ€.
βH=∑i=0l−1aimodM β
ν΄μ ν¨μμ μ λ ₯μΌλ‘ λ€μ΄μ¬ μ μλ λ¬Έμμ΄μ μ’ λ₯λ 무ννμ§λ§ μΆλ ₯ λ²μλ μ ν΄μ Έμλ€. λ€λ€ λΉλκΈ° μ§μ μ리μ λν΄μλ ν λ²μ―€ λ€μ΄λ΄€μ κ²μ΄λ€. κ·Έ μ리μ μνλ©΄ μλ‘ λ€λ₯Έ λ¬Έμμ΄μ΄λλΌλ λμΌν ν΄μ κ°μ κ°μ§ μ μλ€. μ΄λ₯Ό ν΄μ μΆ©λμ΄λΌκ³ νλλ°, μ’μ ν΄μ ν¨μλ μ΅λν μΆ©λμ΄ μ κ² μΌμ΄λμΌ νλ€. μμμ μ μν ν΄μ ν¨μλ μνλ²³μ μμλ§ λ°κΏλ μΆ©λμ΄ μΌμ΄λκΈ° λλ¬Έμ λμ ν΄μ ν¨μμ΄λ€. κ·Έλ¬λκΉ μ‘°κΈ λ κ°μ ν΄λ³΄μ.
μ΄λ»κ² νλ©΄ μμκ° λ¬λΌμ‘μλ μΆλ ₯κ°λ λ¬λΌμ§κ² ν μ μμκΉ? 머리λ₯Ό ꡴리면 μμ΄μ κ° νλ§λ€ κ³ μ ν κ³μλ₯Ό λΆμ¬νλ©΄ λλ€λ μμ΄λμ΄λ₯Ό μκ°ν΄λ³Ό μ μλ€. κ°μ₯ λνμ μΈ λ°©λ²μ νμ λ²νΈμ ν΄λΉνλ λ§νΌ νΉμ ν μ«μλ₯Ό κ±°λμ κ³±ν΄μ κ³±ν΄μ€ λ€μ λνλ κ²μ΄ μλ€. μ΄λ₯Ό μμμΌλ‘ νννλ©΄ μλμ κ°λ€.
βH=∑i=0l−1airimodM β
λ³΄ν΅ rκ³Ό Mμ μλ‘μμΈ μ«μλ‘ μ νλ κ²μ΄ μΌλ°μ μ΄λ€. μ°λ¦¬κ° μ§μ μ νλΌκ³ νλ©΄ νλ€ν λκΉ rμ κ°μ 26λ³΄λ€ ν° μμμΈ 31λ‘ νκ³ Mμ κ°μ 1234567891(λλκ²λ μμμ΄λ€!!)λ‘ νμ.
μ΄μ μ¬λ¬λΆμ΄ ν μΌμ μ μμ ν΅ν΄ μ£Όμ΄μ§ λ¬Έμμ΄μ ν΄μ κ°μ κ³μ°νλ κ²μ΄λ€. κ·Έλ¦¬κ³ μ΄ ν¨μλ κ°λ¨ν΄ 보μ¬λ μμ£Ό μ°μ΄λκΉ κΈ°μ΅ν΄λλ€κ° μ μ¨λ¨Ήλλ‘ νμ.
μ λ ₯
첫 μ€μλ λ¬Έμμ΄μ κΈΈμ΄ Lμ΄ λ€μ΄μ¨λ€. λμ§Έ μ€μλ μλ¬Έ μλ¬Έμλ‘λ§ μ΄λ£¨μ΄μ§ λ¬Έμμ΄μ΄ λ€μ΄μ¨λ€.
μ λ ₯μΌλ‘ μ£Όμ΄μ§λ λ¬Έμμ΄μ λͺ¨λ μνλ²³ μλ¬Έμλ‘λ§ κ΅¬μ±λμ΄ μλ€.
μΆλ ₯
λ¬Έμ μμ μ£Όμ΄μ§ ν΄μν¨μμ μ λ ₯μΌλ‘ μ£Όμ΄μ§ λ¬Έμμ΄μ μ¬μ©ν΄ κ³μ°ν ν΄μ κ°μ μ μλ‘ μΆλ ₯νλ€.
100μ λ°κΈ° μν΄μλ,
Math.pow μ¬μ© X
Long νμ μ¬μ© O 쑰건μ λ§μΆ°μΌνλ€.
Math.pow μ¬μ©ν 50μ μ§λ¦¬ μ½λ
import java.util.*;
class Main {
public static void main(String args[]) throws Exception {
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
String s=kb.next();
String[] arr=s.split("");
String[] str={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
int[] num={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26};
int sum=0;
int index=0; // μ κ³± μ
for(int i=0; i<n; i++){
for(int j=0; j<str.length; j++){
if(arr[i].equals(str[j])){
sum+=num[j]*(Math.pow(31,index));
break;
}
}
index++;
}
System.out.println(sum);
}
}
Longνμ + Math.pow μ¬μ© μν 100μ μ½λ ( r=31μ λμ ν©μΌλ‘ μ΄μ© )
import java.util.*;
class Main {
public static void main(String args[]) throws Exception {
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
String s=kb.next();
long sum=0;
double r=0;
r=Math.pow(31,0);
for(int i=0; i<n; i++ ){
sum+=(s.charAt(i)-96)*r;
r=r*31%1234567891;
}
System.out.println(sum&1234567891);
}
}
'π μ½λ©ν μ€νΈ > λ°±μ€ & νλ‘κ·Έλλ¨Έμ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€][JAVA]Level 0 : νΉμ΄ν μ λ ¬ (0) | 2022.12.15 |
---|---|
[νλ‘κ·Έλλ¨Έμ€][JAVA]Level 0 : μΉν¨μΏ ν° (0) | 2022.12.14 |
[λ°±μ€][JAVA]2609λ² : μ΅λ곡μ½μμ μ΅μ곡배μ (0) | 2022.12.13 |
[νλ‘κ·Έλλ¨Έμ€][JAVA]Level 0 : μΊλ¦ν°μ μ’ν (0) | 2022.12.10 |
[νλ‘κ·Έλλ¨Έμ€][JAVA]Level 0 : μ΄μ§μ λνκΈ° (0) | 2022.12.10 |