본문 바로가기

잡인터뷰

잡 인터뷰 질문중 코딩테스트 - PHP

반응형

최근에 잡인터뷰를 예상하지 못하게 갑자기 여러 군데를 한꺼번에 보게 되었다.

물론 결과는 나중을 봐야 알겠지만...

 

그 중 한 군데에서 내가 예전에 Leetcode에서 한번 해봤던 문제를 냈다.

문자열이 팰린드롬(palindrome) 인지 아닌지를 확인하는 코딩이었다.

물론 PHP로 하는 코딩이라 쉽게 `strrev()`라는 함수를 쓰면 곰방 끝나겠지만,

그렇게 해버리는 이 문제의 핵심을 잃어버리는 것.

투보인터 알고리즘 (Two Pointer Algorithm)을 사용해서 찾을 수 있는 방법을 원하는 것이다.

예전 포스트에서 설명했듯이 

문자열의 시작과 끝을 가리키는 두 개의 포인터를 놓고 이후 두 포인터 문자 짝이 맞는지를 확인하면 되는 것이다.

그럼 PHP코드를 보면 간단하다.

    function isPalindrome(string $str): bool
    {
        $strLen = strlen($str);
        $left = 0;
        $right = $strLen - 1;
        while ($left < $right) {
            if ($str[$left] != $str[$right]) {
                return false;
            }

            $left++;
            $right--;
        }
        return true;
    }

그렇다면 PHP에서 투포인터를 사용 안 하고 쉽게 해 보면 밑과 같다.

    function isPalindrome(string $str): bool {
        return strrev($str) === $str;
    }

물론 strrev() 함수를 사용했어도 Okay 했을지는... 잘 모르겠으나.. 의도는 투포인터 알고리즘을 이해하는 지를 확인하고 싶다는 것을 알았기에... ㅋ

반응형