210508 ν μμΌ 8μΌμ°¨
# 5~7μΌμ°¨ 볡μ΅
- 리μ€νΈλ μμΉλ₯Ό κ°λ¦¬ν€λ νλ‘νΌν°(front, end)κ° μλ€.
- next()Β ν¨μλ‘ λ¦¬μ€νΈμ νμ¬ μμμμ λ€μ μμλ‘ μ΄λν μ μλ€.
- prev()Β ν¨μλ‘ νμ¬ μμμμ μ΄μ μμλ‘ μ΄λν μ μλ€.
- moveTo(n)Β ν¨μλ₯Ό μ΄μ©νλ©΄ n λ²μ§Έ μμΉλ‘ ν λ²μ μ΄λν μ μλ€.
- currPos()Β ν¨μλ 리μ€νΈμ νμ¬ μμΉλ₯Ό κ°λ¦¬ν¨λ€.
- List ν΄λμ€ κ΅¬ν
μμ±μ ν¨μ
function List() {
this.listSize = 0;
this.pos = 0;
this.dataStore = [];
this.clear = clear;
this.find = find;
this.toString = toString;
this.insert = insert;
this.append = append;
this.remove = remove;
this.front = front;
this.end = end;
this.prev = prev;
this.next = next;
this.length = length;
this.currPos = currPos;
this.moveTo = moveTo;
this.getElement = getElement;
this.contains = contains;
}
- Append : 리μ€νΈμ μμ μΆκ°(listSize μμΉμ μμλ₯Ό μΆκ°νλ€.)
function append(element) {
this.dataStore[this.listSize++] = element;
}
- Find : 리μ€νΈμ μμ κ²μ(length ν¨μ νμ, μΈλ±μ€ κ° λ°ν)
function find(element) {
for (let i = 0; i < this.dataStore.length; ++i) {
if (this.dataStore[i] == element) {
return i;
}
}
return -1;
}
- Remove : 리μ€νΈμ μμ μμ
// remove() : find()μ λ°νκ°μ splice ν¨μμ λκ²¨μ£Όμ΄ μνλ μμλ₯Ό μμ ν λ€μ dataStore λ°°μ΄μ μ°κ²°νλ€. μμλ₯Ό μμ νλ©΄ true, λͺ»νλ©΄ false λ°νfunction remove(element) {
let foundAt = this.find(element);
if (foundAt > -1) {
this.dataStore.splice(foundAt, 1);
--this.listSize;
return true;
}
return false;
}
(spliceμ λ λ²μ§Έ μΈμμ 0μ μ£Όλ©΄ μμ μΆκ°, 1 μ΄μμ μ«μλ§νΌ μμλ₯Ό μμ νλ€.)
- Length : 리μ€νΈμ μμ κ°μ
function length() {
return this.listSize;
}
- toString : 리μ€νΈμ μμ νμΈ
function toString(){
return this.dataStore;
}
- Insert : 리μ€νΈμ μμ μ½μ (κΈ°μ‘΄ μμ λ€μ μλ‘μ΄ μμ μ½μ . findλ‘ κΈ°μ‘΄ μμμ μμΉλ₯Ό μ°Ύμ μννλ€.)
function insert(element, after) {
let insertPos = this.find(after);
if (insertPos > -1) {
this.dataStore.splice(insertPos + 1, 0, element);
++this.listSize;
return true;
}
return false;
}
- clear : λ°°μ΄μ μμ ν λ€μ λΉ λ°°μ΄μ λ€μ λ§λ λ€. listSize, posλ 0μΌλ‘ μ΄κΈ°ννλ€.
function clear() {
delete this.dataStore;
this.dataStore.length = 0;
this.listSize = this.pos = 0;
}
- contains : 리μ€νΈμ νΉμ κ°μ΄ μλμ§ νλ¨(true, false)
function contains(element) {
for (let i = 0; i < this.dataStore.length; ++i) {
if (this.dataStore[i] == element) {
return true;
}
}
return false;
}
- iterator : List ν΄λμ€μ λ΄λΆ μ μ₯μλ₯Ό μ§μ μ°Έμ‘°νμ§ μκ³ λ¦¬μ€νΈλ₯Ό νμν μ μλ€. front, end, prev, next, currPosλ₯Ό μ΄μ©ν΄ ꡬνν μ μλ€.
λ°°μ΄μ μΈλ±μ€μ λΉν΄ μ₯μ μ μλμ κ°λ€.
- 리μ€νΈ μμμ μ κ·Όν λΒ λ΄λΆ λ°μ΄ν° μ μ₯μκ° λ¬΄μμΈμ§Β κ±±μ ν νμκ° μλ€.
- 리μ€νΈμ μ μμλ₯Ό μΆκ°νμ λ νμ¬ μΈλ±μ€κ° μΈλͺ¨ μλ κ°μ΄ λλ λ°λ©΄ λ°λ³΅μλ₯Ό μ΄μ©νλ©΄ 리μ€νΈκ° λ°λμ΄λ λ°λ³΅μλ₯Ό κ°±μ ν νμκ° μλ€.
- List ν΄λμ€μ μ¬μ©νλλ°μ΄ν° μ μ₯μμ μ’ λ₯κ° λ¬λΌμ Έλ μ΄μ κ³Ό κ°μ λ°©μμΌλ‘ μμμ μ κ·Όν μ μλ€.
for (names.front(); names.currPos() < names.length(); names.next()) {
console.log(names.getElement);
}
νμ¬ μμΉλ₯Ό 리μ€νΈ μμΌλ‘ μ€μ (front())νλ€. κ·Έλ¦¬κ³ currPos() κ° λ¦¬μ€νΈ κΈΈμ΄λ³΄λ€ μμ λ 루νλ₯Ό λ°λ³΅νλ€. 루νλ₯Ό λ λλ§λ€ next()λ‘ ν μμμ© μ μ§νλ€.
CH3 리μ€νΈ
3.5 μ°μ΅λ¬Έμ
#1 νμ¬ λ¦¬μ€νΈμ λͺ¨λ μμλ³΄λ€ ν΄ λλ§ μμλ₯Ό μ½μ νλ ν¨μλ₯Ό ꡬννμμ€. μ¬κΈ°μ ν¬λ€λ μλ―Έλ μ«μμΌ λλ ν¬κΈ°λ₯Ό λΉκ΅νκ³ , ν μ€νΈμΌ λλ μνλ²³μμΌλ‘ λμ€μ μλ―Ένλ€.
# ꡬν
νμ¬ λ¦¬μ€νΈλ³΄λ€ λͺ¨λ μμκ° ν΄ λλ§ μμλ₯Ό μ½μ
νλ ν¨μμ΄λ―λ‘ λͺ¨λ μμλ₯Ό νμνλ ν¨μκ° νμνλ€κ³ μκ°νλ€.
find ν¨μλ μ½μ
(μΆκ°κ° μλλΌ μ½μ
μ΄λΌκ³ νμΌλ―λ‘ insert() ν¨μ)μ μν΄ μΆκ°ν΄λμλ€.
λͺ¨λ μμλ³΄λ€ μ½μ
νλ €λ μμκ° ν°μ§ νμΈνμ¬ λκΉμ§ νμΈνμ λ return trueλ₯Ό λ°ννκ³ μ€κ°μ μ½μ
νλ €λ μμλ³΄λ€ ν° μμκ° μ‘΄μ¬ν κ²½μ° falseλ₯Ό 리ν΄νλ ν¨μ bigger()μ ꡬννλ€.
bigger() ν¨μ ꡬν
insertBigger() ν¨μ ꡬν
// # : νμ¬ λ¦¬μ€νΈμ λͺ¨λ μμλ³΄λ€ ν΄ λλ§ μμλ₯Ό μ½μ
νλ ν¨μλ₯Ό ꡬννμμ€. μ¬κΈ°μ ν¬λ€λ μλ―Έλ μ«μμΌ λλ ν¬κΈ°λ₯Ό λΉκ΅νκ³ , ν
μ€νΈμΌ λλ μνλ²³μμΌλ‘ λμ€μ μλ―Ένλ€.function List() {
this.listSize = 0;
this.pos = 0;
this.dataStore = [];
this.append = append;
this.length = length;
this.find = find;
this.insertBigger = insertBigger;
}
function length() {
return this.listSize;
}
function append(element) {
this.dataStore[this.listSize++] = element;
}
function find(element) {
for (let i = 0; i < this.dataStore.length; ++i) {
if (this.dataStore[i] == element) {
return i;
}
}
return -1;
}
let nums = new List();
nums.append(1);
nums.append(2);
nums.append(3);
nums.append(4);
nums.append(5);
nums.append(6);
function bigger(element) {
for (let i = 0; i < this.dataStore.length; ++i) {
console.log(this.dataStore[i], element);
if (this.dataStore[i] >= element) {
return false;
}
}
return true;
}
function insertBigger(element, after) {
// μ½μ
ν¨μμ΄λ―λ‘ insertμ λΉμ·ν ꡬ쑰if (bigger(element)) {
let insertPos = this.find(after);
if (insertPos > -1) {
this.dataStore.splice(insertPos + 1, 0, element);
++this.listSize;
return;
}
} else {
console.log(
"fail : 리μ€νΈμ μμ μ€μ ν΄λΉ μμλ³΄λ€ ν° μμκ° μ‘΄μ¬ν©λλ€. "
);
return;
}
}
nums.insertBigger(7, 2);
console.log(nums.dataStore);
μ¬κΈ°μ ν
μ€νΈμΌ κ²½μ° μνλ²³ μμΌλ‘ λμ€μΈ κ²μΌλ‘ νλ¨ν΄μΌ νλ―λ‘ μ°μ ν
μ€νΈμΈμ§ μ«μμΈμ§λ₯Ό ꡬλ³ν ν¨μλ₯Ό ꡬννμλ€.
function check(num) {
if (isNaN(num) == true) {
return true;
} else {
return false;
}
}
check() ν¨μμλ isNaN λ©μλλ₯Ό μ¬μ©νμλλ° Not-a-NumberλΌλ λ»μΌλ‘ μ«μκ° μλ κ²½μ° trueλ₯Ό λ°νν΄μ€λ€.
κ·Έλ°λ° sort() ν¨μμ κ²½μ°μλ compare() ν¨μλ₯Ό λμ΄ μ«μ λΉκ΅λ₯Ό μνν΄μΌ μ λλ‘ μ λ ¬μ΄ λλ κ²κ³Ό νΌλνμ¬ λΉκ΅μ°μ°μλ‘ λΉκ΅νλ κ²½μ°μλ λ¬Έμμ΄μ μνλ²³μμΌλ‘, μ«μλ μ«μ ν¬κΈ°μμΌλ‘ λΉκ΅ν΄μ€λ€λ κ²μ λ€λ¦κ² μκ² λμλ€.
check() ν¨μλ₯Ό λ°λ‘ μΆκ°ν νμκ° μμ΄μ‘κ³ μλμ κ°μ΄ ν¨μλ₯Ό ꡬννμλ€.
# μ 체 μ½λ
// # : νμ¬ λ¦¬μ€νΈμ λͺ¨λ μμλ³΄λ€ ν΄ λλ§ μμλ₯Ό μ½μ
νλ ν¨μλ₯Ό ꡬννμμ€. μ¬κΈ°μ ν¬λ€λ μλ―Έλ μ«μμΌ λλ ν¬κΈ°λ₯Ό λΉκ΅νκ³ , ν
μ€νΈμΌ λλ μνλ²³μμΌλ‘ λμ€μ μλ―Ένλ€.function List() {
this.listSize = 0;
this.pos = 0;
this.dataStore = [];
this.append = append;
this.length = length;
this.find = find;
this.bigger = bigger;
this.insertBigger = insertBigger;
}
function length() {
return this.listSize;
}
function append(element) {
this.dataStore[this.listSize++] = element;
}
function find(element) {
for (let i = 0; i < this.dataStore.length; ++i) {
if (this.dataStore[i] == element) {
return i;
}
}
return -1;
}
function bigger(element) {
for (let i = 0; i < this.dataStore.length; ++i) {
console.log(this.dataStore[i], element);
if (this.dataStore[i] >= element) {
return false;
}
}
return true;
}
function insertBigger(element, after) {
if (this.bigger(element)) {
let insertPos = this.find(after);
if (insertPos > -1) {
this.dataStore.splice(insertPos + 1, 0, element);
++this.listSize;
console.log("리μ€νΈ μμ μ½μ
μ±κ³΅!");
return;
}
} else {
console.log(
"fail : 리μ€νΈμ μμ μ€μ ν΄λΉ μμλ³΄λ€ ν° μμκ° μ‘΄μ¬ν©λλ€. "
);
return;
}
}
// # : μ«μμΈ κ²½μ°let nums = new List();
nums.append(1);
nums.append(2);
nums.append(3);
nums.append(4);
nums.append(5);
nums.append(6);
nums.insertBigger(2, 2);
console.log(nums.dataStore);
// # : ν
μ€νΈμΈ κ²½μ°let names = new List();
names.append("C");
names.append("R");
names.append("Cy");
names.append("J");
names.append("B");
names.append("D");
names.insertBigger("A", "B");
console.log(names.dataStore);
#2 νμ¬ λ¦¬μ€νΈμ λͺ¨λ μμλ³΄λ€ μμ λλ§ μμλ₯Ό μ½μ νλ ν¨μλ₯Ό ꡬννμμ€.
λͺ¨λ μμλ³΄λ€ μμ λμ΄λ―λ‘ λΉκ΅μ°μ°μλ₯Ό λ°λλ‘ λ°κΎΈμ΄ μλμ²λΌ ꡬννμλ€.
# μ 체 μ½λ
function List() {
this.listSize = 0;
this.pos = 0;
this.dataStore = [];
this.append = append;
this.length = length;
this.find = find;
this.smaller = smaller;
this.insertSmaller = insertSmaller;
}
function length() {
return this.listSize;
}
function append(element) {
this.dataStore[this.listSize++] = element;
}
function find(element) {
for (let i = 0; i < this.dataStore.length; ++i) {
if (this.dataStore[i] == element) {
return i;
}
}
return -1;
}
function smaller(element) {
for (let i = 0; i < this.dataStore.length; ++i) {
console.log(this.dataStore[i], element);
if (this.dataStore[i] <= element) {
return false;
}
}
return true;
}
function insertSmaller(element, after) {
if (this.smaller(element)) {
let insertPos = this.find(after);
if (insertPos > -1) {
this.dataStore.splice(insertPos + 1, 0, element);
++this.listSize;
console.log("리μ€νΈ μμ μ½μ
μ±κ³΅!");
return;
}
} else {
console.log(
"fail : 리μ€νΈμ μμ μ€μ ν΄λΉ μμλ³΄λ€ μμ μμκ° μ‘΄μ¬ν©λλ€. "
);
return;
}
}
// # : μ«μμΈ κ²½μ°let nums = new List();
nums.append(1);
nums.append(2);
nums.append(3);
nums.append(4);
nums.append(5);
nums.append(6);
nums.insertSmaller(2, 2);
console.log(nums.dataStore);
// # : ν
μ€νΈμΈ κ²½μ°let names = new List();
names.append("C");
names.append("R");
names.append("Cy");
names.append("J");
names.append("B");
names.append("D");
names.insertSmaller("A", "B");
console.log(names.dataStore);
#3 μ¬λμ μ΄λ¦κ³Ό μ±λ³μ μ μ₯νλ Person ν΄λμ€λ₯Ό ꡬννμμ€. μ΅μν 10κ°μ Person κ°μ²΄λ₯Ό ν¬ν¨νλ 리μ€νΈλ₯Ό λ§λμμ€. 리μ€νΈμμ κ°μ μ±λ³μ κ°μ§ μ¬λμ λͺ¨λ μΆλ ₯νλ ν¨μλ₯Ό ꡬννμμ€.
리μ€νΈ λ΄λΆλ λ°μ΄ν° μ μ₯μκ° λ°°μ΄λ‘ λμ΄μκΈ° λλ¬Έμ ch2μμ λ°°μ λ λ°°μ΄ ν¨μμ€μ filterλ₯Ό μ΄μ©ν΄μ μνλ κ°μ²΄ μμλ₯Ό ν¬ν¨νλ λ°°μ΄λ§μ λ°ννλλ‘ μκ°νλ€. (filterλ μ£Όμ΄μ§ 쑰건μ ν΅κ³Όνλ λͺ¨λ μμλ₯Ό λͺ¨μ λ°°μ΄λ‘ λ°ννλ€.)
// # : μ¬λμ μ΄λ¦κ³Ό μ±λ³μ μ μ₯νλ Person ν΄λμ€λ₯Ό ꡬννμμ€. μ΅μν 10κ°μ Person κ°μ²΄λ₯Ό ν¬ν¨νλ 리μ€νΈλ₯Ό λ§λμμ€. 리μ€νΈμμ κ°μ μ±λ³μ κ°μ§ μ¬λμ λͺ¨λ μΆλ ₯νλ ν¨μλ₯Ό ꡬννμμ€.function List() {
this.listSize = 0;
this.dataStore = [];
this.append = append;
this.length = length;
this.sameSex = sameSex;
}
function length() {
return this.listSize;
}
function append(element) {
this.dataStore[this.listSize++] = element;
}
let persons = new List();
persons.append({ name: "F", sex: "female" });
persons.append({ name: "G", sex: "female" });
persons.append({ name: "H", sex: "female" });
persons.append({ name: "I", sex: "female" });
persons.append({ name: "J", sex: "female" });
persons.append({ name: "A", sex: "male" });
persons.append({ name: "B", sex: "male" });
persons.append({ name: "C", sex: "male" });
persons.append({ name: "D", sex: "male" });
persons.append({ name: "E", sex: "male" });
function sameSex(sex) {
return this.dataStore.filter((x) => {
if (x.sex === sex) {
return x;
}
});
}
console.log(persons.sameSex("female"));
console.log("\n");
console.log(persons.sameSex("male"));
CH4 μ€ν
리μ€νΈλ νΉν λ°μ΄ν° μ μ₯ μμκ° μ€μνμ§ μκ±°λ, μ μ₯λ λ°μ΄ν°λ₯Ό κ²μν νμκ° μμ λ μκΈ΄νλ€. μΌλΆ μ΄ν리μΌμ΄μ
μμλ μΌλ° 리μ€νΈλ³΄λ€ μ’ λ 볡μ‘ν μλ£κ΅¬μ‘°κ° νμν λκ° μλ€.
리μ€νΈμ λΉμ·νμ§λ§ λ λ€μν λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ μ€νμ κ°μ₯ μλΆλΆμμλ§ μλ£μ μΆκ°/μμ κ° μΌμ΄λλ―λ‘ μ€νμλκ° λΉ λ₯΄κ³ ꡬνμ΄ μ¬μ΄ ν¨μ¨μ μΈ μλ£κ΅¬μ‘°λ€.
4.1 μ€ν λμ
μ€νμ μμ 리μ€νΈλ‘ ꡬμ±λλ©° Topμ΄λΌ λΆλ¦¬λ νμͺ½ λμΌλ‘λ§ μμμ μ κ·Όν μ μλ€. νμ
μ μΆ(Last-In, First-Out)μ΄λ€.
νμ
μ μΆμ΄λΌλ νΉμ± λλ¬Έμ λ°λ°λ₯μ μλ μμμ μ κ·Όνλ €λ©΄ λͺ¨λ μμλ₯Ό μ κ±°νλ μ λ°μ μλ€.
λ³΄ν΅ μ€νμ Topμ μλ μμλ₯Ό νμΈνλ κΈ°λ₯λ μ 곡νλ€. popμΌλ‘λ νμΈν μ μμ§λ§ μμλ₯Ό κΊΌλ΄κΈ° λλ¬Έμ΄λ€. peekμΌλ‘ μμλ₯Ό μ κ±°νμ§ μκ³ λ΄μ©λ§ νμΈνλ€.
clear νλ‘νΌν°λ μ€νμ λͺ¨λ μμλ₯Ό μ κ±°νλ€. lengthλ ν¬ν¨λ μμμ μλ₯Ό μ μ₯νλ€. emptyλ μ€νμ μμκ° μλμ§ μ¬λΆλ₯Ό μλ €μ€λ€.(lengthλ‘λ νμΈν μ μλ€.)
4.2 μ€ν ꡬν
function Stack() {
this.dataStore = [];
this.top = 0;
this.push = push;
this.pop = pop;
this.peek = peek;
this.clear = clear;
this.length = length;
}
function push(element) {
// this.top++μ΄λ―λ‘ μμ μΆκ°ν topμ 1 μ¦κ°μν¨λ€.this.dataStore[this.top++] = element;
}
// λ°ννκ³ top λ³μκ°μ κ°μμν¨λ€.function pop() {
return this.dataStore[--this.top];
}
// this.top-1μ΄λ©΄ κ°μ₯ μ°μΈ‘(μ€νμ 맨μ)μ μμλ₯Ό κ°λ¦¬ν¨λ€.function peek() {
return this.dataStore[this.top - 1];
}
function length() {
return this.top;
}
function clear() {
this.top = 0;
}
let s = new Stack();
s.push("D");
s.push("R");
s.push("B");
console.log("length: " + s.length());
console.log(s.peek());
let popped = s.pop();
console.log("The popped element is : " + popped);
console.log(s.peek());
s.push("C");
console.log(s.peek());
s.clear();
console.log("length: " + s.length());
console.log(s.peek());
s.push("C");
console.log(s.peek());
peek() ν¨μλ top-1 μμΉμ μμμ μ κ·Όν΄ μ€νμ ν μμλ₯Ό λ°ννλ€. (λ§μ½ μ€νμ μμκ° 3κ°λΌλ©΄ top(length)μ 3μΌ κ²μ΄κ³ μ μ½λμ λ°λ₯΄λ©΄ λ°°μ΄μ κ°μ₯ μ€λ₯Έμͺ½ κ°μ΄ κ°μ₯ μ κ°μΌλ‘ λ³Ό μ μλ€. peek()μ 보면 this.top -1 μ μΈλ±μ€μμ λ΄μ©μ νμΈνκ³ μλλ° μ€μ μμμ κ°μκ° 3μ΄λΌλ©΄ κ°μ₯ μ€λ₯Έμͺ½(μ€νμΌλ‘λ 맨 μ)μ μλ μμλ₯Ό νμΈνκΈ° μν΄μ this.top-1λ‘ μ§μ ν κ²μ΄λ€.
4.3 Stack ν΄λμ€ μ΄μ©νκΈ°
4.3.1 μ§λ² λ³ν
1. nμ κ°μ₯ μ€λ₯Έμͺ½ μ«μλ n%bμ΄λ€. μ΄ κ°μ μ€νμ μΆκ°νλ€.
=> s.push(num % base);
2. nμ n/bμΌλ‘ μΉννλ€.
=>Β num = Math.floor((num /= base)); // Math.floorλ μμκ°μ΄ μ‘΄μ¬ν λ μμκ°μ λ²λ €μ£Όλ κΈ°λ₯
3. n=0 μ΄ λκ³ λλ¨Έμ§κ° μμ λκΉμ§ 1λ², 2λ² κ³Όμ μ λ°λ³΅νλ€.
=>Β do { } while( num > 0 ) ;
4. μ€νμ μ μ₯λ μ«μλ₯Ό λͺ¨λ κΊΌλ΄ λ³νλ μ«μ λ¬Έμμ΄μ λ§λ λ€.
=>Β while(s.length() > 0 ) { converted += s.pop(); } // sμ μμκ° popμ ν΅ν΄ μ€μ΄λ€λ€κ° 0κ°κ° λλ μκ° whileλ¬Έμ μ’
λ£λλ€.
return converted;
NOTE : μ΄ μκ³ λ¦¬μ¦μ 2μ§μ ~ 9μ§μ μ¬μ΄μμλ§ μλνλ€.
function Stack() {
this.dataStore = [];
this.top = 0;
this.push = push;
this.pop = pop;
this.peek = peek;
this.clear = clear;
this.length = length;
}
function push(element) {
// this.top++μ΄λ―λ‘ μμ μΆκ°ν topμ 1 μ¦κ°μν¨λ€.this.dataStore[this.top++] = element;
}
// λ°ννκ³ top λ³μκ°μ κ°μμν¨λ€.function pop() {
return this.dataStore[--this.top];
}
// this.top-1μ΄λ©΄ κ°μ₯ μ°μΈ‘(μ€νμ 맨μ)μ μμλ₯Ό κ°λ¦¬ν¨λ€.function peek() {
return this.dataStore[this.top - 1];
}
function length() {
return this.top;
}
function clear() {
this.top = 0;
}
function mulBase(num, base) {
let s = new Stack();
do {
s.push(num % base);
num = Math.floor((num /= base));
} while (num > 0);
let converted = "";
while (s.length() > 0) {
converted += s.pop();
}
return converted;
}
let num = 32;
let base = 2;
let newNum = mulBase(num, base);// 32λ₯Ό 2μ§λ²μΌλ‘ λ³ννκ² λ€.console.log(num + " converted to base " + base + " is " + newNum);
num = 125;
base = 8;
newNum = mulBase(num, base);// 125λ₯Ό 8μ§λ²μΌλ‘ λ³ννκ² λ€.console.log(num + " converted to base " + base + " is " + newNum);
4.3.2. νλ¬Έ
"racecar"λ "A man, a plan, a canal: Panama"(ꡬλμ 무μ), 1001 λ±μ΄ νλ¬Έμ΄λ€.
μ€νμ μ΄μ©νλ©΄ μλ λ¬Έμμ΄μ μμμΌλ‘, λ§μ§λ§ λ¬Έμλ μ€νμ Topμ, 첫 λ¬Έμλ μ€νμ Bottomμ μμΉνλ€.
μ€νμ λ¬Έμμ΄μ λͺ¨λ μΆκ°νμΌλ©΄
=>
for (let i = 0; i < word.length; ++i) {
s.push(word[i]);
}
κ° λ¬Έμλ₯Ό λ€μ κΊΌλ΄ μ λ¬Έμμ΄μ λ§λ€ μ μλ€.
=>
while (s.length() > 0) {
rword += s.pop();
}
μ΄λ κ² μμμΌλ‘ λ°λ λ¬Έμμ΄κ³Ό μλ λ¬Έμμ΄μ λΉκ΅νλ€.Β λΉκ΅ κ²°κ³Όκ° κ°μΌλ©΄ λ¬Έμμ΄μ νλ¬Έμ΄λ€.
=>
if (word == rword) {
return true;
} else {
return false;
}
function Stack() {
this.dataStore = [];
this.top = 0;
this.push = push;
this.pop = pop;
this.peek = peek;
this.clear = clear;
this.length = length;
}
function push(element) {
this.dataStore[this.top++] = element;
}
function pop() {
return this.dataStore[--this.top];
}
function peek() {
return this.dataStore[this.top - 1];
}
function length() {
return this.top;
}
function clear() {
this.top = 0;
}
function isPalindrome(word) {
let s = new Stack();
for (let i = 0; i < word.length; ++i) {
s.push(word[i]);
}
let rword = "";
while (s.length() > 0) {
rword += s.pop();
}
if (word == rword) {
return true;
} else {
return false;
}
}
let word = "hello";
if (isPalindrome(word)) {
console.log(word + " is a palindrome");
} else {
console.log(word + " is not palindrome");
}
word = "racecar";
if (isPalindrome(word)) {
console.log(word + " is a palindrome");
} else {
console.log(word + " is not palindrome");
}
4.3.3. μ¬κ·
μ€νμ μ΄μ©ν΄ μ¬κ· νλ‘μΈμ€λ₯Ό νλ΄λΌ μ μλ€. ν©ν λ¦¬μΌ ν¨μμ μ¬κ· ꡬνμ μ΄μ©ν΄ μ΄λ»κ² μ€νμΌλ‘ μ¬κ·λ₯Ό ꡬννλμ§ νμΈν μ μλ€.
function factorial(n) {
if (n === 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
console.log(factorial(5));
μ€ν μ΄μ© :Β 5λΆν° 1μ μ€νμΌλ‘ μΆκ°νλ€.
=>
while (n > 1) {
s.push(n--);
}
루νλ₯Ό λλ©΄μ κ° μ«μλ₯Ό κΊΌλ΄ κ²°κ³Όλ₯Ό κ³±ν΄κ°λ©΄ 120μ΄ λμ¨λ€.
=>
let product = 1;
while (s.length() > 0) {
product += s.pop();
}
return product;
function factorial(n) {
if (n === 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
function Stack() {
this.dataStore = [];
this.top = 0;
this.push = push;
this.pop = pop;
this.length = length;
}
function push(element) {
this.dataStore[this.top++] = element;
}
function pop() {
return this.dataStore[--this.top];
}
function length() {
return this.top;
}
function fact(n) {
let s = new Stack();
while (n > 1) {
s.push(n--);
}
let product = 1;
while (s.length() > 0) {
product *= s.pop();
}
return product;
}
console.log(factorial(5));
console.log(fact(5));