본문 바로가기

CodingTest Practice

[인프런] 회문 문자열

회문 문자열

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

문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 "NO"를 출력하는 프로그램을 작성

 

■ 문제 풀이

1) 입력 설명
- 회문을 검사할 때, 대소문자를 구분하지 않는다.
- 첫 줄에 길이가 100을 넘지 않는 공백이 없는 문자열이 주어진다.


2) 출력 설명
- 첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력한다.

3) 테스트
- input : gooG
- output : YES

4) 문제 풀이
- 첫번째 solution에서는 input으로 들어온 문자열을 배열로 생성 후, 반복문을 통해 순차적으로 거꾸로 읽으며 tmp 배열을 생성하여 
두개의 배열을 비교하여 같은 배열인지를 비교
- 두번째 solution은 input으로 들어온 문자열의 길이를 통해 검사 범위를 설정한 뒤, 맨 앞쪽의 문자와 맨 뒤쪽의 값을 하나씩 비교해가며 비교를 통해 회문 문자열인지를 체크
-팰린드롬

 

import java.util.Arrays;
import java.util.Scanner;

// 첫 번째 풀이
public class Main {

    private String solution(String input) {
        String answer = "NO";
        char[] chars = input.toLowerCase().toCharArray();
        char[] tmp = new char[chars.length];

        int length = chars.length;
        int index=0;
        for (int i = length - 1; i >= 0; i--) {
            tmp[index] = chars[i];
            index++;
        }

        if (Arrays.equals(chars, tmp)) {
            answer = "YES";
        }

        return answer;
    }
    public static void main(String[] args) {
        Main main = new Main();
        Scanner scanner = new Scanner(System.in);
        String input = scanner.next();

        System.out.println(main.solution(input));
        return;
    }
}

 

import java.util.Scanner;

// 두번째 풀이
public class Main {

    private String solution(String input) {
        String answer = "YES";

        input = input.toLowerCase();    //회문 검사 시, 대소문자를 구분하지 X
        int length = input.length();
        for (int i = 0; i < length / 2; i++) {
            if (input.charAt(i) != input.charAt(length - i - 1)) {
                return "NO";
            }
        }

        return answer;
    }
    public static void main(String[] args) {
        Main main = new Main();
        Scanner scanner = new Scanner(System.in);
        String input = scanner.next();

        System.out.println(main.solution(input));
        return;
    }
}

 

'CodingTest Practice' 카테고리의 다른 글

[인프런] 숫자만 추출  (0) 2022.04.03
[인프런] 유효한 팰린드롬  (0) 2022.04.03
[인프런] 중복문자제거  (0) 2022.04.02
[인프런] 특정 문자 뒤집기  (0) 2022.03.31
[인프런] 단어 뒤집기  (0) 2022.03.30