개발놀이터

1-8. 유효한 회문 문자열 본문

기타/코딩테스트

1-8. 유효한 회문 문자열

마늘냄새폴폴 2023. 2. 9. 12:12

package string.CircleString18.my;

import java.util.Scanner;

public class Main {

    /**
     * -내 풀이-
     * 이번 문제 또한 lt 와 rt 를 도입해 공백, 특수문자를 if, else if 문으로 일일이 검사했다
     *
     * --피드백--
     * 1-7번 문제와 동일한 피드백, 알고리즘 / 자료구조를 사용했다는 느낌이 안든다.
     *
     * -선생님의 풀이-
     * 정규표현식 + replaceAll 로 아주 간단하게 풀어냈다. 간단한 정규표현식 정도는 알아두면 좋을 것 같다.
     *
     * "[^A-Z]"
     * ^ : ~가 아닌
     * A-Z : A 부터 Z 까지
     * = A 부터 Z 가 아닌
     */

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        String input = kb.nextLine();

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

    private static String solution(String input) {
        input = input.toUpperCase();
        int lt = 0, rt = input.length() - 1;
        char[] c = input.toCharArray();

        while (lt < rt) {
            if (c[lt] == ' ') {
                lt++;
            }
            else if (c[rt] == ' ') {
                rt--;
            }
            else if (!(c[lt] >= 65 && c[lt] <= 90)) {
                lt++;
            }
            else if (!(c[rt] >= 65 && c[rt] <= 90)) {
                rt--;
            }
            else {
                if (c[lt] != c[rt]) {
                    return "NO";
                }
                lt++;
                rt--;
            }
        }

        return "YES";
    }
}

 

package string.CircleString18.teacher;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        String str = kb.nextLine();

        System.out.println(solution(str));
    }

    private static String solution(String str) {
        String answer = "NO";
        str = str.toUpperCase().replaceAll("[^A-Z]", "");
        String tmp = new StringBuilder(str).reverse().toString();

        if (str.equals(tmp)) {
            return "YES";
        }

        return answer;
    }
}

'기타 > 코딩테스트' 카테고리의 다른 글

1-10. 가장 짧은 문자 거리  (0) 2023.02.09
1-9. 숫자만 추출  (0) 2023.02.09
1-7. 회문 문자열  (0) 2023.02.09
1-6. 중복된 문자 제거  (0) 2023.02.07
1-5. 특정 문자 뒤집기  (0) 2023.02.07