1. 문제 링크
2. 문제 및 입출력예제
3. 문제 풀이
1. 누적합을 이용해 길이마다 알파벳 26개의 누적합이 저장된 배열을 만든다.
2. 입력받은 알파벳에서 시작-1과 끝의 값 차이를 출력한다
4. 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String S = br.readLine();
int q = Integer.parseInt(br.readLine());
int[][] alpha = new int[S.length()+1][26];
alpha[0][S.charAt(0)-'a']++;
for(int i=1;i<S.length();i++) {
for(int j=0;j<26;j++) {
alpha[i][j] = alpha[i-1][j];
}
alpha[i][S.charAt(i)-'a']++;
}
for(int i=0;i<q;i++) {
String[] split = br.readLine().split(" ");
int a = split[0].charAt(0)-'a';
int start = Integer.parseInt(split[1]);
int end = Integer.parseInt(split[2]);
if(start == 0) {
sb.append(alpha[end][a]);
}
else {
sb.append(alpha[end][a] - alpha[start-1][a]);
}
sb.append("\n");
}
System.out.println(sb);
}
}
'ALGORITHM' 카테고리의 다른 글
백준 1965 상자넣기 (Java) (0) | 2023.06.13 |
---|---|
백준 3187 양치기 꿍 (Java) (0) | 2023.06.12 |
백준 15685 드래곤 커브 (Java) (0) | 2023.06.10 |
백준 1915 가장 큰 정사각형 (Java) (0) | 2023.06.09 |
백준 11651 좌표 정렬하기 2 (Java) (0) | 2023.06.08 |