알고리즘(Algorithm)

[Algorithm] 특정 문자 뒤집기

XDXDX 2023. 3. 23. 11:20

1. 문제

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

2. 예시

a!#$p#@pl!@e
e!#$l#@pp!@a

3. 코드

이전 글에서는 그냥 문자뒤집기였다면 이번엔 특정문자 뒤집기다.

단어 뒤집기에서 이해 못 했던 방식을 이해하는데 도움이 됐다.

이전 글 - https://connect00t.tistory.com/11

 

[Algorithm] 단어 뒤집기

1. 문제 N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램 작성 첫 줄에 자연수 N(3 re 예시 단어 하나를 예를 들어보자. apple 뒤집은 단어는 elppa가 리턴돼야 한다. ch.length -> 배열로 나눈

connect00t.tistory.com

import java.util.Scanner;

public class Main {
    public String solution(String str) {
        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--;
            }
        }
        String result = String.valueOf(ch);
        
        return result;
    }

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

        String str = in.nextLine();

        System.out.println(case5.solution(str));
    }
}
  1. 입력한 문자는 char형식의 배열로 만들어 저장한다.
  2. int형으로 최소인덱스(lt)와 최대 인덱스(rt)를 저장한다.
  3. while문으로 lt <rt의 경우가 true일 경우 if문 실행
    1. isAlphabetic() 메서드를 사용해 알파벳 유무를 파악한 후, 알파벳이 아니면 다음 문자열 확인
    2. lt와 rt를 거쳐도 알파벳일 경우 char형식으로 변수를 하나 만들어 저장한다.
    3. while문이 false가 되면 빠져나온다.
  4. 결괏값은 String으로 반환

 

4. 마무리

어렵다.. 너무 어려워.. 이런 기초도 너무 어려워...

ㅠㅠ

 

[isAlphabetic()]

1.Character메서드로 char형식의 값이 문자인지 아닌지 판별

 

'알고리즘(Algorithm)' 카테고리의 다른 글

[Algorithm] 회문 문자열  (0) 2023.04.03
[Algorithm] 중복문자제거  (0) 2023.03.24
[Algorithm] 단어 뒤집기  (0) 2023.03.13
[Algorithm] 문장 속 단어  (0) 2023.03.10
[Algorithm] 대소문자 변환하기  (0) 2023.03.07