반응형
최근에 잡인터뷰를 예상하지 못하게 갑자기 여러 군데를 한꺼번에 보게 되었다.
물론 결과는 나중을 봐야 알겠지만...
그 중 한 군데에서 내가 예전에 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 했을지는... 잘 모르겠으나.. 의도는 투포인터 알고리즘을 이해하는 지를 확인하고 싶다는 것을 알았기에... ㅋ
반응형
'잡인터뷰' 카테고리의 다른 글
파이썬 - Python 3.11의 새로운 점 (5) | 2023.03.19 |
---|---|
데이터 주도 개발 이란 무엇인가? - Data Driven Development (7) | 2023.03.18 |
TDD는 무엇인가? - Test Driven Development (3) | 2023.03.15 |
http와 https의 차이점 (1) | 2023.03.14 |
지속적인 통합, 지속적인 배포 (Continuous Integration/Continuous Delivery - CI/CD) (0) | 2023.03.13 |