package baekjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class b16139 {
public static void main(String[] args) throws IOException {
//Scanner sc = new Scanner(System.in);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
String str = br.readLine();
int q = Integer.parseInt(br.readLine());
while(q-->0) {
st = new StringTokenizer(br.readLine());
//char alpha = sc.n
char alpha = st.nextToken().charAt(0);
int l = Integer.parseInt(st.nextToken());
int r = Integer.parseInt(st.nextToken());
int count=0;
for(int i = l; i <= r; i++) {
if (str.charAt(i)==alpha) count++;
}
sb.append(count).append("\n");
}
System.out.println(sb);
}
}
문제를 읽자마자 어떻게 풀어야할지 바로 가닥이 잡혀서 쓱쓱 써내려 갔다.
컴파일 해보니까 답도 맞게 나와서 어라? 그래도 실버1인데 이렇게 잘 풀린다고?
응..~아니야 돌아가.........
역시 코딩의 세계는 호락호락하지 않다..
solved.ac 페이지에서 문제 태그가 누적합이었는데 나는 누적합을 사용하지 않았다.
지금까지 풀었던 문제들은 모두 Integer만 다루었고 문자로는 한번도 해보지 않았을 뿐더러 아스키코드 값을 사용해야 될 것 같긴한데... 도무지 어떻게 해야할지 감도 잡히지 않았다.
결국 다른 분의 코드를 참고했다..ㅠㅠ
package baekjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class b16139_2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int sum[][] = new int[str.length()][26];
sum[0][str.charAt(0)-'a']++;
for(int i = 1; i < str.length(); i++) {
int tmp = str.charAt(i)-'a';
for(int j = 0; j < 26; j++) {
sum[i][j] = sum[i-1][j];
}
sum[i][tmp]++;
}
int q = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
while(q-->0) {
StringTokenizer st = new StringTokenizer(br.readLine());
char alpha = st.nextToken().charAt(0);
int l = Integer.parseInt(st.nextToken());
int r = Integer.parseInt(st.nextToken());
if(l==0) {
sb.append(sum[r][alpha-'a']).append('\n');
} else {
sb.append(sum[r][alpha-'a'] - sum[l-1][alpha-'a']).append('\n');
}
}
System.out.println(sb);
}
}
'Problems & Solutions' 카테고리의 다른 글
13900 순서쌍의 곱의 합 (0) | 2022.08.10 |
---|---|
2559 수열 (0) | 2022.08.08 |
10816 숫자 카드2 (0) | 2022.08.05 |
1920 수 찾기 (0) | 2022.08.05 |
19941 햄버거 분배 (0) | 2022.08.05 |