-->
품생품사(品生品死)

소프트웨어 품질에 살고 품질에 죽는 그런 평범한 일상 블로그

TESTING/PROGREMING

[자바스크립트 코딩 - Chap.3] 실습 팰린드롬 맞추기 문제 풀어보기

품생품사(品生品死) 2020. 12. 7. 06:00
반응형

자바스크립트 과제 : 팰린드롬 프로그래밍

팰린드롬이란? "토마토"나 "기러기"처럼 거꾸로 읽어도 똑같은 단어를 '팰린드롬(palindrome)'이라고 부릅니다.

간단한 코딩을 통해 팰린드롬을 구분할 수 있도록 작성해 봅시다.

 

문제

팰린드롬 여부를 확인하는 함수 isPalindrome을 작성하려고 하는데요.

isPalindrome은 파라미터 word가 팰린드롬이면 true를 리턴하고 팰린드롬이 아니면 false를 리턴합니다.

 

예를 들어서 "racecar"과 "토마토"는 거꾸로 읽어도 똑같기 때문에 true가 출력되어야 합니다.

그리고 "hello"는 거꾸로 읽으면 "olleh"가 되기 때문에 false가 나와야 하는 거죠.

 

코드를 잘 작성하셨다면, 다음과 같은 결과가 출력되어야 합니다.

 

출력 예시

true
false
true
true
false
true

 

힌트

1. 문자열의 첫 번째 원소와 마지막 원소를 비교해서 일치하는지 확인해야 합니다.

그다음 문자열의 두 번째 원소와 끝에서 두 번째 원소를 비교해서 일치하는지 확인해야겠죠.

 

이런 식으로 순서대로 비교하는 건데요.

한 쌍이라도 일치하지 않으면 false를 리턴하고, 모든 쌍이 일치하는 경우 true를 리턴하면 되겠죠?

 

2. 문자열 word의 첫 번째 원소의 인덱스는 0이고, 마지막 원소의 인덱스는 word.length - 1입니다.

문자열 word의 두 번째 원소의 인덱스는 1이고, 끝에서 두 번째 원소의 인덱스는 word.length - 2입니다.

 

이걸 어떻게 일반화할 수 있을까요?

인덱스 i에 있는 값과 인덱스 word.length - 1 - i에 있는 값을 비교하면 됩니다!

 

모범 답안

function isPalindrome(word) {
  // 여기에 코드를 입력해 주세요.
  for (let i = 0; i < Math.floor(word.length / 2); i++) {
    let left = word[i];
    let right = word[word.length - 1 - i]
    if (left != right) {
      return false
    }
  }
  return true
}

// 테스트 코드
console.log(isPalindrome("racecar"));
console.log(isPalindrome("stars"));
console.log(isPalindrome("기러기"));
console.log(isPalindrome("123321"));
console.log(isPalindrome("hello"));
console.log(isPalindrome("kayak"));

 

해설

참고로 i를 0부터 word.length - 1까지 반복할 필요는 없습니다.

어차피 반대쪽과 비교하는 것이기 때문에 i를 Math.floor(word.length / 2)까지만 반복해도 이미 모든 확인은 끝나는 거죠!

 

 

Related References

 

코딩이 처음이라면, 코드잇

월 3만원대로 Python, JavaScript, HTML/CSS, Java 등 1,600개 이상 프로그래밍 강의를 무제한 수강하세요

www.codeit.kr:443

This is coding_000
JAVA 프로그래밍

요약 : sparta coding club, 스파르타 코딩, 코드잇, 노마드 코더, 프로그래밍, 직장인 코딩, 내일 배움 카드 코딩, 밀크티 코딩, 초등 코딩, 아이스크림 코딩, 코딩 소프트웨어, 자바 스크립트 국비 지원, 자바 스크립트 교육

728x90
반응형