코딩테스트

[코딩테스트 기초] 회문문자열 판별(재귀함수, array splice을 이용하여 - javascript)

보오 2022. 2. 20. 15:11

회문문자열(palindrome)은 거꾸로 읽어도 알파벳이 똑같은 글자를 말한다.

 

알고리즘의 가장 기초적인 문제로 자주 등장하는데, 자바스크립트에서는 reverse 메소드를 이용하여 많이 푼다.

여기에서는 재귀함수와 splice 메소드를 이용하여 풀어보겠다.

 

먼저 args로 넘어온 문자를 split을 이용해 Array로 만들어주고, 재귀함수(recursive)로 돌린다.

재귀함수를 사용할 때는 무조건 if/else 구문으로 조건을 만들 것.

 

특정 조건을 통과하면 true을 리턴, 아니면 false을 리턴하면 된다.

 

여기서 특정 조건은 두 개가 되는데,하나는 배열의 길이가 1 이하일 때.글자가 1글자면 무조건 회문문자열이 된다. ex) 'a', 'i', 'x', ...

 

나머지 하나는?

 

"첫번째 글자와 마지막 글자가 같을 때"이다.이 조건을 통과하면 재귀함수를 또 호출하는데, 이번에는 Array을 splice하여 배열의 첫번째 원소와 마지막 원소를 제해야 한다.이렇게 해서 더이상 나눌 수 없을 때(array.length<=1)까지 반복하여 끝까지 살아남으면 true, 아니면 false을 리턴하면 된다.

 

위 시나리오를 코드로 구현하면 이러하다.

 

// 회문 판별(리스트 슬라이스 이용)
function palindrome(letter) {
  const arr = letter.split("");
  function DFS(list) {
    if (list[0] === list(list.length - 1)) {
      DFS(list.splice(0, list.length - 1));
      return true;
    } else return false;
  }
  return DFS(arr);
}

 

이렇게 쉽게 회문문자열을 자바스크립트로 구현해보았다.

 

(p.s. 대/소문자 구분을 안한다면 최초에 toLowerCase() 또는 toUpperCase()을 사용하여 문자열의 대소문자를 통일해주면 된다.)