728x90
https://www.acmicpc.net/problem/20437
알파벳별로 개수를 저장한 다음, k개 미만인 경우에는 확인하지 않도록 한다!
그리고 k가 1일 경우의 예외처리를 해줘야 한다는 점을 주의!!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
for (int i = 0; i < t; i++) {
String str = br.readLine();
int[] alpha = new int[26];// 알파벳별로 개수를 저장한다.
for (int j = 0; j < str.length(); j++) {
alpha[str.charAt(j) - 'a']++;
}
int k = Integer.parseInt(br.readLine());
if (k == 1) {
System.out.println("1 1");
continue;
}
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (int j = 0; j < str.length(); j++) {
if (alpha[str.charAt(j) - 'a'] < k)
continue;
int count = 1;
for (int z = j + 1; z < str.length(); z++) {
if (str.charAt(z) == str.charAt(j))
count++;
if (count == k) {
min = Math.min(min, z - j + 1);
max = Math.max(max, z - j + 1);
break;
}
}
}
if (min == Integer.MAX_VALUE && max == Integer.MIN_VALUE) {
System.out.println(-1);
} else {
System.out.println(min + " " + max);
}
}
}
}
'Java' 카테고리의 다른 글
[백준 1138] 한 줄로 서기 (JAVA) (0) | 2023.04.26 |
---|---|
[백준 13549] 숨바꼭질 3 (JAVA) (0) | 2023.04.25 |
[백준 1446] 지름길 (JAVA) (0) | 2023.04.24 |
[백준 22233] 가희와 키워드 (JAVA) (0) | 2023.04.23 |
[백준 14940] 쉬운 최단거리(JAVA) (0) | 2023.04.23 |