ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 알고리즘 문제 - 회문 문자열
    Java 알고리즘 문제/자바(Java) 알고리즘 문제풀이 입문 2023. 5. 30. 22:38
    반응형

    회문 문자열

    설명

     

    앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.

    문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는

    프로그램을 작성하세요. 단 회문을 검사할 때 대소문자를 구분하지 않습니다.

     

    입력

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

     

    출력

    첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.

     

    package chap1;
    
    import java.util.Scanner;
    
    public class chap1_solution03 {
    
        public String ex_solution03(String str){
            String answer = "YES";
            str=str.toUpperCase();
            int len = str.length();
            for(int i=0; i<len/2; i++){
                if(str.charAt(i)!= str.charAt(len-i-1)){
                    return "NO";
                }
            }
            return answer;
        }
    
        public static void main(String[] args){
            chap1_solution03 T = new chap1_solution03();
            Scanner kb = new Scanner(System.in);
            String str = kb.next();
            System.out.println(T.ex_solution03(str));
    
        }
    }
    

     

     

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

     Scanner를 통해 해당 문자열을 받아온다.

     

     

    public String ex_solution03(String str){
        String answer = "YES";
        str=str.toUpperCase();

    호출하는 과정에 입력받은 str를 매개변수로 넘겨받고 answer에 "YES"라는 값을 설정해준다.

    그리고 대소문자를 구분하지 않는다고 하였으니 toUpperCase()를 통해 모두 대문자로 만들어주자.

     

     

    int len = str.length();
    for(int i=0; i<len/2; i++){
        if(str.charAt(i)!= str.charAt(len-i-1)){
            return "NO";
        }
    }
    return answer;

    입력받은 문자열의 길이를 len으로 설정한다. for문을 돌며 맨처음과 맨 마지막이 같은지 비교하는데

    만약 gooG를 입력하였다면 toUpperCase를 통해 

    G O O G

    이와같은 문자열이 되어들어온다.

    우리는 문자열을 반으로 나눈 후에 처음과 끝 양쪽을 비교해주면된다.

     

    이때 len = 4로 설정되고 처음과 맨 끝을 비교해야하니 0번째 인덱스와 3번째 인덱스를 비교해야한다

    i는 0부터 시작하므로 첫번째 인덱스에 대입하고 마지막에는 문자열의 길이를 설정한것에서 -i -1을 해주어야한다.

    for문을 반복하면서 i값이 커져 처음에는 0번째와 3번째를 비교하게되고

    다음으로는 1번째와 2번째를 비교하게된다.

     

    여기서 비교한 결과값이 다르다면 return "NO"를 반환시킨다.

     

    G O U O G

     만약 이와같은 홀수갯수를 가진 문자열을 입력받는다면 

    똑같이 0번째 인덱스와 마지막 인덱스

    첫번재 인덱스와 마지막 -1 인덱스를 비교하고 문자열을 /2한 값보다 i가 커지므로 for문이 종료된다. 

    반응형

    댓글

Designed by Tistory.