

split("")을 사용해서 문자열 sChar[]로 저장해준다.arr[]을 만들어준다.arr[]와 sChar[]을 비교해주면서 같으면 arr[]에 그 위치를, (else if) 같지 않으면 arr[]에 -1을 넣어준다. 이때, 문자열 arr[]은 String형이므로 String.valueOf()를 이용해서 넣어주는 것을 주의한다.
=> 이렇게 되면 sChar[0] 값인 b가 arr[1]과 같아 첫번째 루프에서는 정상적으로 0이 들어가게 된다. 하지만 sChar[2] 값인 e의 루프를 수행할 때 e와 arr[1]는 같지 않으므로 다시 -1이 들어가게 되는 것이다. 이중 for문 안에 if와 else if를 같이 쓰면 이와 같은 오류가 계속 발생할 것이다.최종 이해!
sChar[i] 값과 arr[j] 값이 같을때는 인덱스 값을 대입하고 (String 타입으로) 안의 for문을 빠져나가도록 했다. else문은 사용하지 않았고 대신 출력하는 for문에서 arr[i]의 값이 정수인지 판단하고 정수가 아닐 경우 (sChar[i] 값과 같은 값이 없는 경우) -1을 넣는다. 그러면 완성!import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));
String S = bfr.readLine();
char[] sChar = new char[S.length()];
for (int i = 0; i < S.length(); i++) {
sChar[i] = S.charAt(i);
}
String arr[] = new String[26];
for (char ch = 97; ch <= 122; ch++) {
arr[ch - 97] = String.valueOf(ch);
}
for (int i = 0; i < sChar.length; i++) {
for (int j = 0; j < arr.length; j++) {
if (arr[j].equals(String.valueOf(sChar[i]))) {
arr[j] = String.valueOf(i);
break;
}
}
}
for (int i = 0; i < arr.length; i++) {
char ch = arr[i].charAt(0);
if(48 > ch || ch > 57) {
arr[i] = String.valueOf("-1");
}
bfw.write(arr[i] + " ");
}
bfw.flush();
bfw.close();
bfr.close();
}
}
