import java.util.*;
class Main {
public String solution(String str) {
String answer = "";
char[] a = str.toCharArray();
int lt = 0 , rt = str.length()-1;
while(lt<rt) {
//a[lt]가 알파벳이 아닐시.
if(!Character.isAlphabetic(a[lt])) lt++;
//a[rt]가 알파벳이 아닐시.
else if(!Character.isAlphabetic(a[rt])) rt--;
//a[lt],a[rt]가 알파벳일시.
else {
char tmp = a[lt];
a[lt] = a[rt];
a[rt] = tmp;
lt++;
rt--;
}
}
answer = String.valueOf(a);
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.next();
System.out.println(T.solution(str));
}
}
toCharArray 메소드를 통해 단어를 배열단위로 나누고, lt,rt를 통해 while문을 돌려준다.
만약, lt가 알파벳이 아닌경우 = 특수문자를 만난경우. 바꾸지 않고 lt를 이동.
만약, rt가 알파벳이 아닌경우 = 특수문자를 만난경우. 바꾸지 않고 rt를 이동.
그 외, lt, rt가 모두 알파벳인 경우. 배열[lt],배열[rt]의 자리를 바꾸고,
lt++, rt-- (lt,rt 이동)
마지막으로, String.valueOf(배열)을 통해 answer에 담는다.
toCharArray(), String.valueOf() 복습!
lt와 rt를 활용한 조건이 있는 문자를 뒤집기 이해!