728x90
문자가 주어지고 암호를 찾는 규칙이 있을때 암호를 몇번만에 찾는지 구하는 문제입니다.
문자는 최대 100가지이며, 영어 대,소문자는 52가지이므로 48가지의 문자가 더 있다고 생각했습니다.
배열에 해당문자가 쓰여진 순서를 기록했습니다.
배열 인덱스에 매핑하는것은 아스키코드를 참고했습니다.
사용 될 수 있는 문자 중 가장 작은 수의 문자는 '!' 입니다.
int index = s.charAt(i) - '!';
arr[index] = i;
매핑한 후에 수학 계산을 해주었습니다.
for (int i = 0; i < code.length(); ++i) {
int index = code.charAt(i) - '!';
result *= size;
result += arr[index];
result %= 900528;
}
계산한 결과를 출력해주었습니다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = br.readLine();
String code = br.readLine();
int[] arr = new int[200];
int result = 0;
int size = s.length();
for (int i = 0; i < s.length(); ++i) {
int index = s.charAt(i) - '!';
if (arr[index] == 0) {
arr[index] = i + 1;
}
}
for (int i = 0; i < code.length(); ++i) {
int index = code.charAt(i) - '!';
result *= size;
result += arr[index];
result %= 900528;
}
bw.write(result + "\n");
bw.close();
}
}
'알고리즘' 카테고리의 다른 글
[Java] 백준 16434번 드래곤 앤 던전 (0) | 2023.08.19 |
---|---|
[Java] 백준 1549번 K (0) | 2023.08.09 |
[Java] 백준 16507번 어두운 건 무서워 (0) | 2023.08.09 |
[Java] 백준 2230번 수 고르기 (0) | 2023.08.09 |
[Java] 백준 11509번 풍선 맞추기 (0) | 2023.08.09 |