Algorithm/문제

5. 특정 문자 뒤집기

챛채 2023. 5. 16. 12:39

 

- 처음 출발에 lt, rt 둘 다 알파벳이므로 서로 교환을 시킨다. 그리고 동시에 증가시킨다. 

- 다음 lt, rt 위치에는 특수문자가 있으므로 교환 없이 증가시킨다.

- if(lt==특수문자)  //if lt가 알파벳이 아닌가? ->특수문자냐

  else if (rt==특수문자) //rt가 특수문자이면 하나 감소

  else() //lt, rt 둘 다 특수문자가 아니면 교환

 

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
   public String solution(String str) {
       String answer;
       char[] s = str.toCharArray();
       int lt=0, rt=str.length()-1; //인덱스 번호가 0부터 시작이므로 rt는 -1 해줘야함
       while(lt<rt) {
           if(!Character.isAlphabetic(s[lt]))//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); //s라는 기본 배열을 String화 시켜줌
       return answer;
   }
   public static void main(String[] args){
       Main T = new Main();
       Scanner kb = new Scanner(System.in);
       String str = kb.next();
       System.out.println(T.solution(str));
   }
}

4. 단어 뒤집기 문제와 연관