유효한 팰린드롬

아기코딩단2·2022년 9월 7일
0

알고리즘

목록 보기
10/10
<!--my soution-->

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과 - 섹션3-2 - 유효한 팰린드롬</title>
    </head>
    <body>
        <script>
            function solution(str) {
                // console.log(str);
                let answer = '';
                const reg = /[^a-z]/g;
                const result = str.toLowerCase().replace(reg, '');
                str = result.split('').reverse().join('');
                result === str ? answer = 'YES' : answer = 'NO';
                return answer;
            }
            
            let str = "found7, time: study; Yduts; emit, 7Dnuof";
            console.log(solution(str));
            /*
                유효한 팰린드롬
                앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.
                문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 
                작성하세요.
                단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다.
                알파벳 이외의 문자들의 무시합니다.
                ▣ 입력설명
                첫 줄에 정수 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다. 
                ▣ 출력설명
                첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.
                ▣ 입력예제 1 
                found7, time: study; Yduts; emit, 7Dnuof
                ▣ 출력예제 1
                YES
            */
        </script>
    </body>
</html>


잘 나온다ㅇㅇ 내가 궁금한 거는 reverse() 메서드는 원본배열을 변경시키는 부분이다. 살짝 헷갈리는 부분이 있는데 정확하게 설명하지 못하겠다.

나는 처음에 문자열을 반으로 쪼개서 각자의 0번 인덱스부터 비교하려 했는데 유연하지 못한 생각이었다. 물론 이렇게 생각해서 점차 얻는 부분도 있다.

요즘은 어떤 코드를 짜야할까 생각하고 있다. 사람이 읽기 좋은 코드를 짜야겠다고 생각한다. 컴퓨터가 이해하는 코드보다는..

<!--teacher's solution-->


<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){
                let answer="YES";
                s=s.toLowerCase().replace(/[^a-z]/g, '');
                if(s.split('').reverse().join('')!==s) return "NO";
                return answer;
            }
            
            let str="found7, time: study; Yduts; emit, 7Dnuof";
            console.log(solution(str));
        </script>
    </body>
</html>

나와 다른점은 나는 삼항연산자를 사용하고 선생님은 if 문을 사용햇다는 점이다.
어떻게 짜야지 예쁜 코드를 짤 수 있을까 생각한다.

profile
레거시 학살자

0개의 댓글