Algorithm/μΈν”„λŸ°(inflearn)

[JavaScript/section 3] 02 - μœ νš¨ν•œ νŒ°λ¦°λ“œλ‘¬

_μ„±ν˜Έ_ 2022. 9. 8. 12:28
728x90
λ°˜μ‘ν˜•

πŸ“Œ 문제

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

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

 

πŸ§‘πŸ»‍πŸ’» λ‚˜μ˜ 풀이 방법

  • toUpperCase() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μž…λ ₯된 λ¬Έμžμ—΄μ„ λŒ€λ¬Έμžλ‘œ λ³€ν™˜ν•œλ‹€. 
  • 각 λ¬Έμžλ“€μ„ ν•˜λ‚˜μ”© λŒλ©΄μ„œ charCodeAt() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ•ŒνŒŒλ²³μ— ν•΄λ‹Ήν•˜λŠ” 문자만 str λ³€μˆ˜μ— λˆ„μ μ‹œμΌœμ€€λ‹€.

πŸ‘¨πŸΌ‍🏫 κ°•μ‚¬λ‹˜ 풀이 방법

[^]: λΆ€μ • 문자 클래슀. λŒ€κ΄„ν˜Έ μ•ˆμ— ν¬ν•¨λ˜μ§€ μ•Šμ€ λ¬Έμžλ“€λ‘œ 맀치.

^(캐럿): μž…λ ₯의 μ‹œμž‘κ³Ό 맀치. 

  • toUpperCase() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μž…λ ₯된 λ¬Έμžμ—΄μ„ λŒ€λ¬Έμžλ‘œ λ³€ν™˜ν•œλ‹€. 
  • μ•ŒνŒŒλ²³μ— ν•΄λ‹Ήν•˜μ§€ μ•ŠλŠ” λ¬Έμžλ“€μ„ replace() λ©”μ„œλ“œμ™€ μ •κ·œ ν‘œν˜„μ‹λ₯Ό μ‚¬μš©(replace(/[^A-Z]/g, ''])ν•˜μ—¬ 빈 문자('')둜 κ΅μ²΄ν•œλ‹€.

 

πŸ“ 풀이

// λ‚˜μ˜ 풀이 방법
function solution(s) {
  let answer = 'YES';
  s = s.toUpperCase();
  let str = '';

  for (let x of s) {
    if (x.charCodeAt() >= 65 && x.charCodeAt() <= 90) str += x;
  }

  if (str !== str.split('').reverse().join('')) return 'NO';

  return answer;
}

let str = 'found7, time: study; Yduts; emit, 7Duof';
console.log(solution(str));
// κ°•μ‚¬λ‹˜ 풀이 방법
function solution(s) {
  let answer = 'YES';
  
  s = s.toUpperCase().replace(/[^A-Z]/g, '');
  if (s.split('').reverse().join('') !== s) return 'NO';

  return answer;
}

let str = 'found7, time: study; Yduts; emit, 7Dnuf';
console.log(solution(str));