설명
한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램을 작성하세요.
입력
첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어집니다.
문자열의 길이는 100을 넘지 않는다.
출력
첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력한다.
예시 입력 1
teachermode e
예시 출력 1
1 0 1 2 1 0 1 2 2 1 0
내가 푼 방식
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[] c = sc.next().toCharArray();
int t = sc.next().charAt(0);
int startIndex = 1000; // 이 부분은 생각을 못했다. 앞 글자 끝 글자 순서를 위해서 충분히 길게
int lastIndex = c.length - 1; // 마지막 인덱스
int[] result = new int[c.length];
for (int i = 0; i < c.length; i++) {
if (c[i] == t) { // 찾는 문자와 같으면 배열에 0 넣음, 넣을 값 0으로 초기화
startIndex = 0;
result[i] = 0;
} else { // 아니라면 넣을 값 증가
startIndex++;
}
result[i] = startIndex; // 이 후 배열에 넣을 값 넣음
System.out.println(result[i]);
}
for (int i = lastIndex; i >= 0; i--) { // 거꾸로 돌림
if (c[i] == t) { // 위와 동일
startIndex = 0;
result[i] = startIndex;
} else {
startIndex++; // 아니면 넣을 값을 증가 시키고 기존 배열 값보다 크다면 작은값 넣음
if (result[i] > startIndex) {
result[i] = startIndex;
}
}
}
for(int i = 0; i < result.length; i++) {
System.out.print(result[i] + " ");
}
}
}