본문 바로가기

백준

[백준] 15829 Hashing [자바]

 


https://blog.naver.com/jihogrammer/222314445259

 

[Java] System.in.read() - 3

다시 작성하지 않을라 했는데, 심심해서 작성한다. 알고리즘 문제 풀 때 최적화된 형태를 정리한다. 보통 ...

blog.naver.com

 

 


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.StringTokenizer;

public class Main {
 	public static void main(String arg[]) throws Exception {
 		int M = read();
 		int N = 1234567891;
 		byte[] a = new byte[M];
 		System.in.read(a);
 		long sum = 0;
 		long pow = 1;
 		for(int i = 0; i < M; i++) {
 			int temp = a[i] - 96;
 			sum += temp * pow;
 			pow = (31 * pow) % N;
 		}
 		System.out.println(sum%N);
 	}
 	private static int read() throws Exception {
 		int c, n = System.in.read() & 15; //15 = 1111 한자리 숫자는 여기만 읽으면 된다. 48 = 110000 & 001111 = 0 49 = "1" = 110001 & 001111 = 000001 = 1
 		while((c = System.in.read()) > 32) {
 			n = (n << 3) + (n << 1) + (c & 15); //n << 1 = n * 2 n << 2 = n * 4 n << 3 = n * 8 n * 10 = (n * 8) + (n * 2)
 		}
 		if(c == 13) System.in.read();
 		return n;
 	}
}

'백준' 카테고리의 다른 글

[백준] 10827 a^b [자바]  (0) 2022.02.09
[백준] 9251 LCS [자바]  (0) 2022.01.28
[백준] 3090 차이를 최소로 [자바]  (0) 2022.01.25
[백준] 2585 경비행기 [자바]  (0) 2022.01.19
[백준] 1939 중량제한 [자바]  (0) 2022.01.17