종식당

자바 알고리즘 문제풀이 5. 특정 문자 뒤집기(toCharArray()) 본문

자바 알고리즘 문제풀이

자바 알고리즘 문제풀이 5. 특정 문자 뒤집기(toCharArray())

종식당 2024. 11. 1. 17:42
728x90
반응형

 

  • 문제 설명
    첫째줄에 숫자를 입력받으면  숫자만큼 문자열을 입력받는다. 입력받은 문자열중에서 특수문자는 그대로 내버려두고 알파벳만 뒤집어서 출력하면 된다.

 

  • 제출 코드
import java.util.*;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);

        String str = sc.next();
        String answer = "";

        char [] arr = str.toCharArray();
        int lt = 0, rt = str.length() - 1;

        while(lt < rt){
            if(!Character.isAlphabetic(arr[lt])) lt++;
            else if(!Character.isAlphabetic(arr[rt])) rt--;
            else{
                char temp;
                temp = arr[lt];
                arr[lt] = arr[rt];
                arr[rt] = temp;
                lt++;
                rt--;
            }
        }
        answer = String.valueOf(arr);
        System.out.println(answer);
    }
}

 

  • 코드 설명
    문자를 거꾸로 뒤집는 문제는 이전처럼 StringBuilder의 reverse()를 사용해 풀 수 도 있지만 완전히 뒤집는 문제가 아닐 때는 조건을 따져서 lt와 rt를 이용해서 풀 수 있다.
    lt는 처음 인덱스 문자열 맨 앞에서 시작하고 rt는 마지막 인덱스 문자열 맨 뒤에서 시작한다. lt와 rt에 해당하는 문자들을 먼저 특수문자인지 알파벳인지부터 확인하고 모두 알파벳이면 위치를 바꿔준다.
    문자열 배열을 사용해서 배열을 돌았으니 출력해줄 때는 문자열로 출력해 준다.

  • 마무리
    toCharArray()
    toCharArray()는 문자열을 문자 배열(char [])로 변환 => 문자열의 각 문자를 하나씩 배열의 요소로 넣어 반환한다.
    String str = "Hello";
    char[] arr = str.toCharArray(); // ['H', 'e', 'l', 'l', 'o']

    Character.isAlphabetic(char ch)
    Character.isAlphabetic(char ch)는 입력받은 문자가 알파벳인지 확인하여, 알파벳 문자인 경우 true를 반환하고 그렇지 않으면 false를 반환
    char ch = 'A';
    boolean result = Character.isAlphabetic(ch); // true
    char ch2 = '1';
    boolean result2 = Character.isAlphabetic(ch2); // false

    String.valueOf(char [] data)
    String.valueOf(char [] data)는 입력받은 문자 배열(char[])을 문자열로 변환하여 반환
    자바에서는 문자 배열을 문자열로 직접 변환할 수 없기 때문에, 배열 내의 문자들을 합쳐서 하나의 문자열로 표현할 때 사용
    char[] arr = {'H', 'e', 'l', 'l', 'o'};
    String str = String.valueOf(arr); // "Hello"

 

728x90
반응형