자바스크립트 과제 : 팰린드롬 프로그래밍
팰린드롬이란? "토마토"나 "기러기"처럼 거꾸로 읽어도 똑같은 단어를 '팰린드롬(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
요약 : sparta coding club, 스파르타 코딩, 코드잇, 노마드 코더, 프로그래밍, 직장인 코딩, 내일 배움 카드 코딩, 밀크티 코딩, 초등 코딩, 아이스크림 코딩, 코딩 소프트웨어, 자바 스크립트 국비 지원, 자바 스크립트 교육
'TESTING > PROGREMING' 카테고리의 다른 글
[데이터베이스 정보] 기본 개념에 대해서 상세하게 알아보기 (0) | 2020.12.09 |
---|---|
[자바스크립트 코딩 - Chap.4] 실습 이자 계산기/레시피 만들기 문제 풀어보 (0) | 2020.12.08 |
[자바스크립트 코딩 - 정보] 자료형(객체)에 대해서 상세하게 알아보자 (0) | 2020.12.06 |
[자바스크립트 코딩 - 정보] 배열 메소드에 대해서 알아두면 좋은 3가지 팁 (0) | 2020.12.05 |
[자바스크립트 코딩 - 정보] 객체에 대해서 알아두면 좋은 8가지 팁 (0) | 2020.12.05 |