1-5 특정 문자 뒤집기 (Java)

정우·2022년 9월 24일

✏️ 문제


설명

영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고,

특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요.

입력

첫 줄에 길이가 100을 넘지 않는 문자열이 주어집니다.

출력

첫 줄에 알파벳만 뒤집힌 문자열을 출력합니다.


✏️ 코드

import java.util.Scanner;

class Main {
    public static String solution(String str) {
        String answer;
        char[] charArray = str.toCharArray();
        int lt = 0;
        int rt = str.length()-1;
        
        while (lt < rt) {
            if (!Character.isAlphabetic(charArray[lt])) {
                lt++;
            }
            else if (!Character.isAlphabetic(charArray[rt])) {
                rt--;
            }
            else {
                char tmp = charArray[lt];
                charArray[lt] = charArray[rt];
                charArray[rt] = tmp;
                lt++;
                rt--;
            }
        }
        
        answer = String.valueOf(charArray);
        return answer;
    }
    
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        System.out.println(solution(str));
    }
}

1-4 의 문자 뒤집기와 같은 원리로 lt와 rt를 통해서 단어의 양끝부터 조사한다.

lt, rt번째에 있는 값이 문자열이 아니라면 바꿀 필요가 없기때문에 lt++, rt는 rt--를 해준다.

그렇지않다면 lt에 있는 값과 rt에 있는 값을 바꿔주기만 하면 되는 것이다.


✏️ 정리

Character.isAlphabetic(x) : x가 알파벳인지 확인하고 알파멧이면 true 반환

Character메소드

profile
That's it

0개의 댓글