import java.util.*;
class Main {
public int[] solution(String s, char t) {
int[] answer = new int[s.length()];
int p = 1000;
//처음부터 탐색
for(int i=0; i<s.length();i++) {
if(s.charAt(i) == t)
{p = 0;
answer[i] = p;}
else
{p++;
answer[i] = p;}
}
//끝에서 탐색하면서 비교
p = 1000; //p값 초기화
for(int i=s.length()-1; i>=0;i--) {
if(s.charAt(i) ==t) p=0;
else {
p++;
answer[i] = Math.min(answer[i], p);
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.next();
char c = kb.next().charAt(0);
for(int x : T.solution(str, c)) {
System.out.print(x+" ");
}
}
}
처음에 나는 원래 문자와 뒤집은것과 비교해서 둘다 배열로 거리를 저장하고 그 배열끼리 비교하면서 작은값을 리턴하려고했다.
그럴 필요없이 0부터 탐색 vs length-1 부터 탐색을 통해 값을 비교하면서 작은값을 리턴해내면 된다.