[백준/JS] 1254번. 팰린드롬 만들기

연성·2022년 3월 2일
0

코딩테스트

목록 보기
261/261
post-thumbnail
post-custom-banner

[백준/JS] 1254번. 팰린드롬 만들기

풀이 1.

  • 기존 문자열을 뒤집어서 하나씩 밀면서 공통 부분을 찾는다.
  • 공통 부분은 다시 추가할 필요가 없고 공통 부분이 아닌 부분만 추가하면 팰린드롬이 된다.

코드 1.

const solution = s => {
  const n = s.length;
  let answer = n;

  let reverse = s.split('').reverse().join('');

  for (let i = 0; i < n; i++) {
    let flag = true;
    for (let j = 0; j < n - i; j++) {
      if (s[i + j] !== reverse[j]) {
        flag = false;
        break;
      }
    }
    if (flag) {
      answer += i;
      break;
    }
  }
  return answer;
};

풀이 2.

  • 뒤에서 n개를 추가하여 팰린드롬 만들기 === 앞에 n개를 제거하여 팰린드롬 만들기
  • 원래 다시 풀 생각은 없었는데 갑자기 한글로 변수를 만들고 싶어서 새로 풀었다.

코드 2.

const 풀이 = 문자열 => {
  const 길이 = 문자열.length;

  const 팰린드롬인가 = 문자열 => {
    let 시작점 = 0;
    let 끝점 = 문자열.length - 1;
    while (시작점 <= 끝점) {
      if (문자열[시작점++] !== 문자열[끝점--]) return false;
    }
    return true;
  };

  for (let 인덱스 = 0; 인덱스 < 길이; 인덱스++) {
    if (팰린드롬인가(문자열.substring(인덱스, 길이))) return 길이 + 인덱스;
  }
};

한글을 사랑합시다

post-custom-banner

0개의 댓글