3 2 1 0 0 1 1 0 1
public int[] solution(String s, char t){
int[] arr = new int[s.length()];
int p = 1000;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == t){
p = 0;
arr[i] = p;
}else {
p++;
arr[i] = p;
}
}
for (int i = arr.length -1; i >= 0; i--) {
p = 1000;
if (arr[i] == t){
p = 0;
}else{
arr[i] = Math.min(arr[i], p);
// 기존에 arr[i]에 들어가있던 값과 비교
}
}
return arr;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.next();
char c = sc.next().charAt(0);
for (int x : T.solution(str, c)) {
System.out.println(x);
}
}
int배열을 사용하며, 자신의 왼쪽
에 있는 문자와의 거리를 측정한다.
첫 문자가 주어진 문자가 아니라면 숫자는 아주 큰 숫자로 초기화한다.
주어진 문자가 아니라면 숫자 1을 증가시키고 맞다면 값을 0으로 초기화 한다.
왼쪽문자와 비교를 반복한다.
비교가 끝나면 반대로 배열의 끝에서부터 오른쪽
문자와 비교한다.
왼쪽부터 비교했을 때 배열에 들어가있는 값과 오른쪽부터 비교했을 때 들어가는 값 중 작은 값을 넣는다.