μ•Œκ³ λ¦¬μ¦˜/νƒœκ·Έ 별 풀이

μœ νš¨ν•œ νŒ°λ¦°λ“œλ‘¬

choi95 2021. 5. 16. 19:22

문제

μ•žμ—μ„œ 읽을 λ•Œλ‚˜ λ’€μ—μ„œ 읽을 λ•Œλ‚˜ 같은 λ¬Έμžμ—΄μ„ νŒ°λ¦°λ“œλ‘¬μ΄λΌκ³  ν•œλ‹€.

λ¬Έμžμ—΄μ΄ μž…λ ₯되면 ν•΄λ‹Ή λ¬Έμžμ—΄μ΄ νŒ°λ¦°λ“œλ‘¬μ΄λ©΄ "YES", μ•„λ‹ˆλ©΄ "NO"λ₯Ό 좜λ ₯ν•˜κ³ μž ν•œλ‹€.

단, νšŒλ¬Έμ„ 검사할 λ•Œ μ•ŒνŒŒλ²³λ§Œ κ°€μ§€κ³  νšŒλ¬Έμ„ κ²€μ‚¬ν•˜λ©°, λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•ŠλŠ”λ‹€.

(μ•ŒνŒŒλ²³ μ΄μ™Έμ˜ λ¬Έμžλ“€μ€ λ¬΄μ‹œν•œλ‹€)

 

λ¬Έμ œν’€μ΄

이전에 ν¬μŠ€νŒ…ν•œ 회문 λ¬Έμžμ—΄ λ¬Έμ œμ™€ 같이 μˆœμ„œμŒμœΌλ‘œ λ¬Άμ–΄ 같은 λ¬Έμžμ—΄μΈμ§€ κ²€μ‚¬ν•œλ‹€.

 

μ•ŒνŒŒλ²³ μ΄μ™Έμ˜ λ¬Έμžλ“€μ€ κ²€μ‚¬ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ •κ·œ ν‘œν˜„μ‹μ„ μ΄μš©ν•˜μ—¬ μˆ«μžλ‚˜ 특수문자λ₯Ό μ œμ™Έν•˜κ³  μ•ŒνŒŒλ²³λ§Œ 남아 μžˆλŠ” λ¬Έμžμ—΄λ“€λ‘œ 이루어진 μƒˆλ‘œμš΄ 배열을 생성해 μ€€λ‹€.

 

μ½”λ“œ

function solution(...strArr) {
  let answer = "YES";
  let newStr = Array.from({ length: 0 });
  let legExp = /[^a-zA-Z]/gi;

  for (let x of strArr) {
    newStr.push(x.toLowerCase().replace(legExp, ""));
  }

  let strScope = Math.floor(newStr.length / 2);

  for (let i = 0; i < strScope; i++) {
    if (
      newStr[i] !== newStr[newStr.length - 1 - i].split("").reverse().join("")
    ) {
      answer = "NO";
    }
  }
  return answer;
}

console.log(
  solution("found7,", "time:", "study;", "Yduts;", "emit,", "7Dnuof")
);

 

κ°œμ„ μ‚¬ν•­

String.toLowerCase()λ₯Ό 톡해 각 λ¬Έμžμ—΄μ€ 이미 μ†Œλ¬Έμžλ‘œ λ°”κΌˆκΈ° λ•Œλ¬Έμ— μ •κ·œ ν‘œν˜„μ‹μœΌλ‘œ 검사λ₯Ό ν• λ•Œ λŒ€λ¬ΈμžκΉŒμ§€ 식별 μš”μ†Œλ‘œ μ“Έ ν•„μš”λŠ” μ—†λ‹€.

/[^a-zA-Z]/g 이 μ•„λ‹Œ /[^a-z]/gλ‘œλ„ μΆ©λΆ„ν•˜λ‹€.