ALGORITHM
백준 16139 인간-컴퓨터 상호작용
공부하는_다온
2023. 6. 11. 22:15
1. 문제 링크
16139번: 인간-컴퓨터 상호작용
첫 줄에 문자열 $S$가 주어진다. 문자열의 길이는 $200,000$자 이하이며 알파벳 소문자로만 구성되었다. 두 번째 줄에는 질문의 수 $q$가 주어지며, 문제의 수는 $1\leq q\leq 200,000$을 만족한다. 세 번째
www.acmicpc.net
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);
}
}