ALGORITHM/COSPRO 2급

[JAVA] 팰린드롬(palindrome) (COS Pro 2급 문제 풀이)

문제8

앞에서부터 읽을 때와 뒤에서부터 읽을 때 똑같은 단어 또는 문장을 팰린드롬(palindrome)이라고 합니다. 예를 들어서 racecar, noon은 팰린드롬 단어입니다.

소문자 알파벳, 공백(" "), 그리고 마침표(".")로 이루어진 문장이 팰린드롬 문장인지 점검하려 합니다. 문장 내에서 알파벳만 추출하였을 때에 팰린드롬 단어이면 팰린드롬 문장입니다. 예를 들어, "Never odd or even."과 같은 문장은 팰린드롬입니다.

소문자 알파벳, 공백(" "), 그리고 마침표(".")로 이루어진 문장 sentence가 주어질 때 팰린드롬인지 아닌지를 return 하도록 solution 메소드를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _한 줄_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정해주세요.


매개변수 설명

소문자 알파벳, 공백(" "), 그리고 마침표(".")로 이루어진 문장 sentence가 solution 메소드의 매개변수로 주어집니다.

  • sentence의 길이는 1이상 100이하입니다.
  • sentence에는 적어도 하나의 알파벳이 포함되어 있습니다.
  • setntence의 각 문자는 소문자 알파벳, 공백(" "), 또는 마침표(".")입니다.

return 값 설명

주어진 문장이 팰린드롬인지 아닌지를 return 해주세요.


예시
sentence return
"never odd or even." true
"palindrome" false
예시 설명

예시 #1
알파벳과 숫자만 추출하여 소문자로 변환해보면 "neveroddoreven"이 되며 이 단어는 팰린드롬입니다.

예시 #2
문장의 맨 앞 문자인 "p"와 맨 뒤 문자인 "e"가 다르므로 팰린드롬이 아닙니다.

풀이

  1. 문자열은 소수와 띄어쓰기, 점(.) 으로 이루어 져있으므로 띄어쓰기와 점을 우선 제거한다.
  2. 반복문을 문장 길이만큼 이용해 첫번째 글자와 마지막글자가 같은지 두번째 글자와 뒤에서 두번째 글자가 같은지 순차적으로 비교한다.
  3. 하나라도 다른게 있으면 그것은 false다.

코드

package cospro2_1;

public class q8
{
    static boolean solution(String sentance){
        //boolean result = false;

        sentance = sentance.replaceAll(" ","");
        sentance = sentance.replaceAll("\\.","");
        for(int i=0; i<sentance.length(); i++){
            //System.out.println(sentance.charAt(i));
            sentance.charAt(i);
            if(sentance.charAt(i)!= sentance.charAt(sentance.length()-1-i))
                return false;
        }
        //result = true
        return true;
    }
    public static void main(String[] args) {
        System.out.println(solution("never odd or even."));

    }
}