String(문자열) 다루기 - 0105. 특정 문자 뒤집기
public static String solution(char[] arr) {
String answer = "";
for(int i=0; i<arr.length; i++) {
char c = arr[i];
if(Character.isAlphabetic(c)) {
answer += arr[arr.length - i - 1];
} else {
answer += c;
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[] str = sc.nextLine().toCharArray();
System.out.println(solution(str));
}
public static String solution(char[] arr) {
int lt = 0, rt = arr.length - 1;
while(lt < rt) {
if(!Character.isAlphabetic(arr[lt])) lt++;
else if(!Character.isAlphabetic(arr[rt])) rt--;
else {
char temp = arr[rt];
arr[rt] = arr[lt];
arr[lt] = temp;
lt++;
rt--;
}
}
return String.valueOf(arr);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[] str = sc.nextLine().toCharArray();
System.out.println(solution(str));
}
나의 풀이는 Character
클래스의 isAlphabetic()
메소드를 이용해
알파벳 여부를 판별 후 알파벳이 아닌 경우에는 그대로 저장, 알파벳인 경우는
문자열의 중심을 기준으로 대칭 위치에 존재하는 문자를 저장하도록 구현했다.
테스트 케이스는 통과하였지만 제출 결과는 오답 처리되었다. 반드시 문자열의
구조가 대칭인 것은 아닌 것 같다.
강의에서는 배열의 양쪽 끝을 각각 가르키며, lt
와 rt
가 모두 문자를 가르키는 경우
서로 내용을 바꾸도록 구현되었다.