main
[String-10] 가장 짧은 문자거리 본문
* 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
* 앞 -> 뒤 / 뒤 -> 앞 방향으로 e 거리 구해서 min 값 을 입력해준다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stk = new StringTokenizer(br.readLine(), " ");
String str = stk.nextToken();
char c = stk.nextToken().charAt(0);
int[] arr = new int[str.length()];
for (int i = 0; i < arr.length; i++) {
arr[i] = -1;
}
// 앞 -> 뒤
int dist = str.length();
for (int i = 0; i < str.toCharArray().length; i++) {
if (c == str.toCharArray()[i]) {
arr[i] = 0;
dist = 0;
dist++;
} else if (dist != -1) {
arr[i] = dist;
dist++;
}
}
// 뒤 -> 앞
dist = str.length();
for (int i = arr.length -1; i >= 0 ; i--) {
if (c == str.toCharArray()[i]) {
dist = 0;
dist++;
} else if (dist != -1) {
arr[i] = Math.min(arr[i], dist);
dist++;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
728x90
'Algorithm' 카테고리의 다른 글
[백준-1271번/Java] 엄청난 부자2 (0) | 2022.11.19 |
---|---|
[Array-9/Java] 격자판 최대합 (0) | 2022.11.19 |
[백준-10870번/Java] 피보나치 수 5 (0) | 2022.11.18 |
[백준-10816번/Java] 숫자 카드 2 (0) | 2022.11.18 |
[백준-2164번/Java] 카드2 (0) | 2022.11.18 |
Comments