😎풀이

해당 문제는 SubStringSubSequence의 차이를 아냐가 중요하다.

  1. Substring — 연속된 부분 문자열
    정의: 원본 문자열에서 연속된 문자들의 집합.

조건:

원본 문자열에서 순서와 위치가 그대로 유지되어야 함.

중간에 끊기지 않고 붙어 있어야 함.

예시:

원본: "abcdef"
substring 예: "abc", "cde", "f"
substring 아님: "ace" (연속되지 않음)
비유: 책에서 한 페이지의 연속된 단락을 그대로 복사한 것.
  1. Subsequence — 순서만 유지되는 부분 시퀀스
    정의: 원본 문자열에서 순서는 유지하지만, 꼭 연속될 필요는 없는 문자들의 집합.

조건:

문자들의 상대적인 순서만 같으면 됨.

중간에 문자가 빠져도 됨.

예시:

원본: "abcdef"
subsequence 예: "ace", "bdf", "abcdef"
subsequence 아님: "cae" (순서가 바뀜)
비유: 책에서 여러 문장을 건너뛰어 골라내는 것, 단 골라낸 순서는 원래 순서대로 유지.

따라서

  1. 팰린드롬 이라면, 한번에 모든 문자를 제거할 수 있으므로 1 반환
  2. 팰린드롬이 아니라면, ab로 표현 가능한 두 경우의 수가 있으므로 2 반환
function removePalindromeSub(s: string): number {
    return isPalindrome(s) ? 1 : 2
};

function isPalindrome(s: string) {
    return s === [...s].reverse().join('')
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글