내 풀이가 없고 강사님 풀이임.
어려웠다.
앞에서 뒤로 한번 구하고 뒤에서 앞으로 거리를 구해서 최소값을 찾아서 배열에 담아줌
public class Main {
public int[] solution(String s, char t) {
int[] answer = new int[s.length()];
char[] x = s.toCharArray();
int p = 1000;
for (int i = 0; i < x.length; i++) {
if (x[i] == t) {
p = 0;
answer[i] = p; // t를 만나면 0으로 초기화 하는 것임
} else {
p++;
answer[i] = p;
}
}
p = 1000;
for(int i = x.length-1; i>=0 ; i--) {
if (x[i] == t) {
p = 0; // 같을 때는 그냥 max 초기화, push는 이미 오른쪽 방향일때 했음.
} else {
p++;
answer[i] = Math.min(answer[i], p);
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
String[] str= sc.nextLine().split(" ");
String s = str[0];
char t = str[1].charAt(0);
for (int x: T.solution(s, t)
) {
System.out.println(x + " ");
}
}
}
'알고리즘 > 인프런_자바코테강의' 카테고리의 다른 글
인프런 12. 암호(JAVA) (0) | 2022.03.30 |
---|---|
인프런 11. 문자열 압축(JAVA) (0) | 2022.03.27 |
인프런 9. 숫자만 추출 (Java) (0) | 2022.03.25 |
8. 유효한 팰린드롬 (0) | 2022.03.25 |
인프런 7. 회문 문자열(JAVA) (0) | 2022.03.25 |