[ Java 코딩 테스트 ] 회문 문자열

한대희·2024년 1월 19일
0

Java 코딩 테스트

목록 보기
8/11

문제

  • 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 한다.
  • 문자열이 입력되면 해당 문자열이 회문 문자열이면 yes를 아니면 no를 출력하는 프로그램을 작성하세요.
  • 단 회문을 검사할 때 대소문자를 구분하지 않습니다.

입력

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

출력

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

예시

//입력
gooG

//출력
yes

코드

  • 요소 하나하나 비교하는 방법
class Main {

    public static String solution(String str) {
        String answer = "YES";
        // 대소문자를 구분하지 않으므로 전부 대문자로 바꾼다.
        str = str.toUpperCase();
        // 문자열을 절반으로 나누어 처음과 끝을 계속해서 비교해 나간다.
        for (int i = 0; i<str.length()/2; i++) {
            if (str.charAt(i) != str.charAt(str.length()-i-1)) {
                answer = "NO";
            }
        }
        return answer;

    };

    public static void main(String[] args) {
        // 스캐너 객체를 생성한다.
        Scanner input = new Scanner(System.in);
        // 문자를 입력 받아 solutrion 메서드에 전달
        String str = input.next();
        System.out.println(solution(str));

    }
}
  • StringBuilder 사용
class Main {

    public static String solution(String str) {
        String answer = "YES";
        // StringBuilder를 사용해서 전달받은 문자열을 뒤집는다.
        String pwd = new StringBuilder(str).reverse().toString();
        // 같은지 비교하여 다르면 no리턴
        if (!str.equalsIgnoreCase(pwd)) {
            answer="NO";
        }

        return answer;

    };

    public static void main(String[] args) {
        // 스캐너 객체를 생성한다.
        Scanner input = new Scanner(System.in);
        // 문자를 입력 받아 solutrion 메서드에 전달
        String str = input.next();
        System.out.println(solution(str));

    }
}

사용한 메서드

equalsIgnoreCase

  • 문자열을 비교할 때 equals는 대소문자를 구분하지만 equalsIgnoreCase는 대소문자를 구분하지 않는다.
String a = "abc";
String b = "ABC";
System.out.println(a.equalsIgnoreCase(b)); // true
profile
개발 블로그

0개의 댓글