[Algorithm] String 문자열 - 특정 문자 뒤집기

Jong Min ·2024년 8월 1일

Algorithm

목록 보기
4/30

특정 문자 뒤집기

설명

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

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

입력

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

출력

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

예시 입력예시 출력
a#b!GE*T@SS#T!EG*b@a

풀이

import java.util.*;

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

      	String str = sc.next();
      	char[] ch = str.toCharArray();

      	int lt = 0, rt = str.length() - 1;

      while(lt < rt){
      	  if(!Character.isAlphabetic(ch[lt])){
        	  	lt++;
        	}else if(!Character.isAlphabetic(ch[rt])){
          		rt--;
        	}else{
          		char tmp = ch[lt];
          		ch[lt] = ch[rt];
          		ch[rt] = tmp;
          		lt++;
          		rt--;
        	}
      	}

      	System.out.println(String.valueOf(ch));

    	}

}

1. 입력받기 및 초기화 : 문자열을 입력받아 문자 배열로 변환하고, lt와 rt 인덱스를 각각 문자열의 시작과 끝으로 초기화합니다.

2. 알파벳 확인 및 스왑:
lt가 가리키는 문자가 알파벳이 아니면 lt를 증가시켜 다음 문자로 넘어갑니다.
rt가 가리키는 문자가 알파벳이 아니면 rt를 감소시켜 이전 문자로 넘어갑니다.
두 인덱스 모두 알파벳을 가리키고 있을 때는 두 문자를 서로 교환하고, lt는 증가시키고 rt는 감소시킵니다. 그리고 lt가 rt와 같거나 커지면 반복을 종료합니다.

Character.isAlphabetic() : 알파벳인지 확인하는 메서드

profile
노력

0개의 댓글