알고리즘(Algorithm)

[Algorithm] 회문 문자열

XDXDX 2023. 4. 3. 17:07

1. 문제

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

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

단, 회문을 검사할 때 대소문자를 구분 X

2. 예시

gooG -> true
gasfdg -> false

3. 코드

import java.util.Scanner;

public class Main {
    public String solution(String str) {
        String ans = "YES";
        str = str.toUpperCase();
         for(int i =0;i<str.length()/2 ;i++){
             if(str.charAt(i) != str.charAt(str.length()-i-1)) return "NO";
         }
         return ans;
    }

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

        String str = in.nextLine();

        System.out.println(case7.solution(str));
    }
}
  1. 회문 문자열은 입력한 문자길이를 반으로 나눠 비교하면 된다.
  2. 문제에 대소문자구분은 하지 않는다로 되어 있으니 toUpperCase() toLowerCase()로 대/소문자 변환을 해준다.
  3. for문으로 맨 앞글자와 뒷 글자를 비교 후 같지 않으면 "NO"를 리턴
  4. 예를 들어 goOg일 경우, 대소문자변환 -> goog
  5. goog를 반으로 나눈 길이는 2이므로 2만큼 for문을 돌리고, 맨 앞글자와 맨 뒷글자 - g, o, o, g에서 g!= g는 false이고, o!= o 또한 false 이므로 return 값은 "YES"

4. 마무리

    public String solution(String str) {
        String ans = "YES";
        str = str.toUpperCase();

        StringBuilder stringBuilder= new StringBuilder(str);
        if(stringBuilder.reverse().toString().equals(str)){
            return ans;
        }else {
            return "No";
        }
    }
  1. 더 간단한 것이 있다. StringBuilder를 사용해 보는 것
  2. 똑같이 대소문자 구분 없이 변환해 준 후, 입력한 str과 reverse()를 사용해 str을 뒤집어 준 후 비교한다
  3. 비교 후 true면 YES, false는 NO

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

[Algorithm] 숫자만 추출  (0) 2023.07.19
[Algorithm] 팰린드롬  (0) 2023.05.30
[Algorithm] 중복문자제거  (0) 2023.03.24
[Algorithm] 특정 문자 뒤집기  (0) 2023.03.23
[Algorithm] 단어 뒤집기  (0) 2023.03.13