[Algorithm] 특정 문자 뒤집기

19·2022년 10월 13일
0

Algorithm

목록 보기
16/28

특정 문자 뒤집기

설명

영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고,
특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요.

입력

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

출력

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

예시 입력 1

a#b!GE*T@S

예시 출력 1

S#T!EG*b@a



해결

public class StringEx_5 {
    public String solution(String input) {
        String answer;
        char[] chars = input.toCharArray();
        // 인덱스
        int lt = 0, rt = chars.length-1;
        while (lt < rt) {
            // 알파벳만 자리변경
            if (!Character.isAlphabetic(chars[lt])) {
                lt++;
            } else if (!Character.isAlphabetic(chars[rt])) {
                rt--;
            } else {
                char tmp = chars[lt];
                chars[lt] = chars[rt];
                chars[rt] = tmp;
                lt++;
                rt--;
            }
        }
        answer = String.valueOf(chars);
        return answer;
    }

    public static void main(String[] args) throws IOException {
        StringEx_5 T = new StringEx_5();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();
        System.out.println(T.solution(input));
    }
}
  • 알파벳일 경우에만 문자열을 뒤집는 문제였다.
  • 전체 문장을 뒤집는 것이 아니기에 StringBuilder는 사용할 수 없었다.
    • 따라서, toCharArray로 char 배열로 만든 후, 하나씩 뒤집는 방법을 사용했다.
  • Character.isAlphabetic으로 쉽게 알파벳 여부를 체크할 수 있었다.
  • if-else if-else를 통해 알파벳인 경우에만 뒤집도록 했다.

Character의 isAlphabetic()메소드로 쉽게 알파벳 여부를 체크할 수 있다는 것을 알게 되었다.
전체 문장을 뒤집는 문제와 유사해서 푸는데 큰 어려움은 없었다.

profile
하나씩 차근차근

0개의 댓글