var letters = []; // this is our stack var rword = ""; putstr("Enter a word: "); var word = readline(); for (var i = 0; i < word.length; i++) { rword += letters.pop(); // pop off the stack in reverse order } if (rword === word) { print(word + " is a palindrome."); } else { print(word + " is not a palindrome."); }다음은 위의 프로그램을 실행시켜 본 몇 가지 예이다.
Enter a word: bob bob is a palindrome. Enter a word: racecar racecar is a palindrome. Enter a word: hello hello is not a palindrome.위의 프로그램은 단어만을 처리하는 데 문장을 처리하도록 바꿔 볼 수도 있을 것이다.이를 테면, 공백을 제거하고 나면 ""a man a plan a canal panama"는 회문이 된다. 이번에는 문장에서 공백을 제거하고 난 다음에 스택에 넣는 형태로 앞에서 만든 프로그램을 확장해 보자.
var letters = []; var rword = ""; putstr("Enter a sentence: "); var sentence = readline(); var sword = ""; for (var i = 0; i < sentence.length; i++) { if (sentence[i] == " ") { ; } else { sword += sentence[i]; } } for (var i = 0; i < sword.length; i++) { letters.push(sword[i]); } while (letters.length > 0) { rword += letters.pop(); } if (rword === sword) { print(sentence + " is a palindrome."); } else { print(sentence + " is not a palindrome."); }다음은 확장된 프로그램을 실행하여 문장을 입력해 본 예이다.
Enter a sentence: a man a plan a canal panama amanaplanacanalpanama is a palindrome. Enter a sentence: now is the time for all good people nowisthetimeforallgoodpeople is not a palindrome.물론, 스택을 사용하지 않고도 회문을 처리하기 위한 프로그램을 만드는 방법이 여러 가지 있을 것이다. 그리고, 위의 방법이 가장 간단한 형태로 프로그램을 만드는 방법도 여러 가지 있을 것이다. 그러나, 스택의 동작에 대해서 이해하고 있는 프로그래머라면, 주어진 데이터의 역순으로 어떤 작업을 처리해야 한다라는 문제를 만나게 되면 스택으로 처리할 수 있겠구나 하는 감을 잡을 수 있을 것이다. 물론 스택만 이런 장점을 제공하는 유일한 자료 구조는 아니다. 다양한 형태의 자료 구조와 자료 구조의 활용 방법에 대한 잘 알고 있는 자바스크립트 프로그래머라면, 매일 매일 작업에서 만나게 되는 여러 문제에 대한 풍부한 해결책을 가지고 있는 것과 같다.
이전 글 : 스택을 넘어서
최신 콘텐츠