반응형
풀이
- 처음 떠오른 방법이 아래 코드와 같은데
- 왠지 효율상 이게 맞나?라는 의문이 있었지만
- 우선 빨리 해결해보겠다는 마음으로 시도해본 결과
- 생각보다 괜찮았는지 해결이 됨
- 문자의 각 인덱스 별로 a-z까지를 카운팅할 2차원 배열을 만들고
- 현재 배열에 이전 배열을 모두 복사한 뒤
- 현재 문자의 인덱스에 1 증가하여 누적 배열을 만들고
- 그에 따른 구간에 특정 알파벳을 구하여 해결
import java.io.*;
import java.util.StringTokenizer;
public class _16139 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
String S = br.readLine();
int q = Integer.parseInt(br.readLine());
int[][] li = new int[S.length()+1][26];
for (int i=0; i<S.length(); i++) {
int idx = (int)S.charAt(i)-97;
for (int j=0; j<26; j++) li[i+1][j]=li[i][j];
li[i+1][idx]++;
}
while (q>0) {
st = new StringTokenizer(br.readLine());
int idx = st.nextToken().charAt(0)-97;
int s = Integer.parseInt(st.nextToken());
int l = Integer.parseInt(st.nextToken());
bw.write(li[l+1][idx]-li[s][idx]+"\n");
q--;
}
bw.flush();
}
}
'알고리즘' 카테고리의 다른 글
[백준, 자바, 1992번] 쿼드트리 (0) | 2024.11.25 |
---|---|
[백준, 자바, 2740번] 행렬 곱셈 (0) | 2024.11.22 |
[백준, 자바, 11660번] 구간 합 구하기 5 (0) | 2024.11.22 |
[백준, 자바, 2559번] 수열 (누적 합) (0) | 2024.11.21 |
[백준, 자바, 9184번] 신나는 함수 실행 (0) | 2024.11.21 |