https://www.acmicpc.net/problem/15829
1. 아이디어
해시 함수를 직접 구현하는 문제로 힌트의 예제를 참고하면 간단한 반복문으로 구현할 수 있다.
2. 문제풀이
해시 값을 구하는 과정에서 int형 오버플로우가 발생하게 돼서 long 타입으로 선언하고 매번 모듈러 연산을 해주는 방식으로 구현했다.
3. 코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int L = Integer.parseInt(br.readLine());
char[] input = br.readLine().toCharArray();
long R = 1;
int M = 1234567891;
long ans = 0;
for (char c : input) {
ans += (c - 'a' + 1) * R;
R *= 31;
ans %= M;
R %= M;
}
System.out.println(ans);
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 4153번 - 직각삼각형 [Java] (0) | 2024.12.02 |
---|---|
[백준] 10569번 - 다면체 [Java] (0) | 2024.12.02 |
[백준] 2559번 - 수열 [Java] (0) | 2024.12.02 |
[백준] 1439번 - 뒤집기 [Java] (0) | 2024.12.02 |
[백준] 2217번 - 로프 [Java] (0) | 2024.12.02 |