본문 바로가기

Algorithm/Inflearn

[Inflearn] 자바 알고리즘 문제풀이 #01-05 5. 특정 문자 뒤집기

문제

설명

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

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

 

입력 

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

 

출력 

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

 

 

 

코드
import java.util.ArrayList;
import java.util.Scanner;

public class Main1_5 {
    public String Solution(String str) {
        String answer = "";
        char[] s = str.toCharArray();
        int lt=0, rt=str.length()-1;
        while(lt < rt) {
            if(!Character.isAlphabetic(s[lt])) lt++; // 좌측 포인트가 특수문자라면 다음 포인트로 이동
            else if(!Character.isAlphabetic(s[rt])) rt--; // 우측 포인트가 특수문자라면 다음 포인트로 이동
            else { // 좌측 포인트, 우측 포인트 모두 숫자라면 교환
                char tmp = s[lt];
                s[lt] = s[rt];
                s[rt] = tmp;
                lt++;
                rt--;
            }
        }
        answer = String.valueOf(s);
        return answer;
    }

    public static void main(String[] args) {
        Main1_5 T = new Main1_5();
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        System.out.println(T.Solution(str));
    }
}

 

 

 

결과

 

 

 

알게된 점

1. Character.isAlphabetic()

https://rookie-programmer.tistory.com/16

 

[JAVA] 자바 Character.메소드 정리

설명 특정 문자가 대문자인지, 소문자인지, 숫자인지, 영문자인지 확인하거나 (참이면 true, 거짓이면 false 반환) 대문자 혹은 소문자로 변환할 때 사용합니다. 예시 Character.isUpperCase() : 특정 문자

rookie-programmer.tistory.com