[DAY-3] JS ์ฃผ์ ๋ฌธ๋ฒ(3)
๐ ํท๊ฐ๋ ธ๋ & ๋ชฐ๋๋ ๋ถ๋ถ๋ค๋ง ์ ๋ฆฌํ๋ ๋๋ง์ TIL
๐ฏ ๋ชจ๋ ๊ฐ์ ๋ด์ฉ์ ์ ์ง ์์์!
์ค๋์ ์๊ฐ์?
๋๋ฌด ์ ์ตํ ์์
์ด์๋ค.
ํนํ Big-O ํ๊ธฐ๋ฒ์ ๋๋ต์ ์ผ๋ก๋ง ์๊ณ ์์๋๋ฐ ์ ๋ง ์ฐจ๊ทผ์ฐจ๊ทผ ๋ค์ฌ๋ค๋ณผ ์ ์๋ ์ข์ ๊ธฐํ์๋ค.
๋ํ ์ญ์ ์ฝ๋ ์์ฑ์ ๋๋ฌด๋๋ ์ฌ๋ฐ๋ค.
์ด๋ก ๊ณต๋ถ๋ง ํ๋ค๊ฐ ์ฝ๋ ์์ฑํ๋ ํ๊ธฐ๋๋ ๊ธฐ๋ถ์ด์๋ค..
DoublyLinkedList ๊ตฌํํ๋๋ฐ ์กฐ๊ธ ์ ๋ฅผ ๋จน์๋ค. ๐ฃ
์๊พธ ์ํ ๊ตฌ์กฐ๊ฐ ์๊ฒจ์ [Circular *n]์ด ์ถ๋ ฅ๋๋.. ๋์ ๋ชป๋์ด ์ฝ๋
์ฝ๋ฉ ํ
์คํธ ๋๋น ๋ฌธ์ ๋ง ํ๋ค๊ฐ, ์ด๋ ๊ฒ ๊ทผ๋ณธ์ ์ธ ์๋ฃ๊ตฌ์กฐ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ฒ๋ ์ค๋๋ง์ธ๋ฐ ์ด์ฌ์ผ๋ก ๋์๊ฐ ๊ธฐ๋ถ์ด์๋ค.
๊ธฐ์ด๊ฐ ํํํด์ผ ์์ผ๋ก ๋์๊ฐ๊ธฐ ์ฝ๋ค! ๊ผญ ๊ธฐ์ตํ์.
[1] ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ
์๋ฃ๊ตฌ์กฐ๋ ๋ฌด์์ผ๊น์? ๋ง ๊ทธ๋๋ก ํน์ ํ ์๋ฃ์ ๊ตฌ์กฐ์ ๋๋ค.
์ด๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ฉฐ ๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ชฉํ์ ๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ด๋ ๋ฌด์์ผ๊น์?
์ ํด์ง ์ผ๋ จ์ ์ ์ฐจ๋ ๋ฐฉ๋ฒ์ ๊ณต์ํํ ํํ๋ก ํํํ ๊ฒ์ ๋งํฉ๋๋ค.
์ด๋ ํน์ ๋ฌธ์ ๋ฅผ ํจ์จ์ ์ด๊ณ ๋น ๋ฅด๊ฒ ํด๊ฒฐํ๋ ๊ฒ์ด ๊ถ๊ทน์ ์ธ ๋ชฉํ์ ๋๋ค.
[1-1] ์๋ฃ๊ตฌ์กฐ์ ์ข ๋ฅ
๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋ 4๊ฐ๋ก ๋๋ ์ ์์ง๋ง, ํฌ๊ฒ 3๊ฐ์ง๋ก ๋๋ ์ ์์ต๋๋ค.
- ๋จ์ ๊ตฌ์กฐ
- ์ ์
- ์ค์
- ๋ฌธ์์ด
- ๋ ผ๋ฆฌ
- ์ ํ ๊ตฌ์กฐ
- ๋ฐฐ์ด
- ์ฐ๊ฒฐ๋ฆฌ์คํธ
- ์คํ
- ํ
- ๋น์ ํ ๊ตฌ์กฐ
- ํธ๋ฆฌ
- ๊ทธ๋ํ
[1-2] ์ ํ ๊ตฌ์กฐ
์๋ฃ๊ตฌ์กฐ์ ์ข ๋ฅ ์ค ํ๋์ธ ์ ํ ๊ตฌ์กฐ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ํ ๊ตฌ์กฐ๋, ํ ์์ ๋ค์ ํ๋์ ์์๋ง ์กด์ฌํ๋ ํํ๋ก ์๋ฃ๋ค์ด ์ ํ์ผ๋ก ๋์ด๋์ด ์๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค.
[1-3] ๋น์ ํ ๊ตฌ์กฐ
๋น์ ํ ๊ตฌ์กฐ๋, ์์ ๊ฐ ๋ค๋๋ค ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ ๊ตฌ์กฐ๋ก ๊ณ์ธต์ ๊ตฌ์กฐ๋ ๋งํ ๊ตฌ์กฐ๋ฅผ ํํํ๊ธฐ์ ์ ์ ํฉ๋๋ค.
์ ํ ๊ตฌ์กฐ์๋ ๋ค๋ฅด๊ฒ ์์๊ฐ ์ฌ๋ฌ ๊ฐ์ ์์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
๐ ์๋ฒฝํ ์๋ฃ๊ตฌ์กฐ๋ ์์ต๋๋ค. >
๋ ์ข๊ณ ๋ ๋์ ์๋ฃ๊ตฌ์กฐ๋ ์์ต๋๋ค.
ํน์ ์ํฉ์์ ์ ์ฉํ ์๋ฃ๊ตฌ์กฐ์ ๋ ์ ์ฉํ ์๋ฃ๊ตฌ์กฐ๊ฐ ์์ ๋ฟ์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ํฉ์ ๋ง๊ฒ ์ ์ ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ํํด์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
[2] ์๊ฐ ๋ณต์ก๋
์๊ฐ ๋ณต์ก๋๋ฅผ ๋ํ๋ด๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ํ๋์ธ Big-O notation์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
(์์ํจ์ < ๋ก๊ทธํจ์ < ์ ํํจ์ < ๋คํญํจ์ < ์ง์ํจ์)
์ ํ์๊ฐ(O(n))์ ์ผ๋ฐ์ ์ธ ๋ฐ๋ณต๋ฌธ์ ๋ ๋งํผ
๋ก๊ทธ์๊ฐ(O(log n))์ ์ ๋ ฅ๋ฐ์ n์ ๋ก๊ทธ๋ฅผ ์์ด ๋งํผ ๋ฃจํ๋ฅผ ๋๊ฒ ๋ฉ๋๋ค.
์ ํ ๋ก๊ทธ์๊ฐ((O(n log n))๊ณผ ์ด์ฐจ ์๊ฐ(O(n^2))์ ๋จ์ํ ๋ ์๊ฐ์ ๊ณฑํ ๊ฐ์ด ๊ฐ๊ฐ์ ์๊ฐ์ด ๋ฉ๋๋ค. (์ ํ _ ๋ก๊ทธ / ์ ํ _ ์ ํ)
๋ณดํต์ ์ฝ๋ฉ ํ ์คํธ์์๋ ์ ์ด๋ O(n^3) ์ด์์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฉด ์ ๋๋ ๋ฌธ์ ๋ค์ด ์ถ์ ๋ฉ๋๋ค.
[2-1] Big-O ํ๊ธฐ๋ฒ ๋ฒ์น
- ๊ณ์๋ฒ์น
์์ k๊ฐ 0๋ณด๋ค ํด ๋, f(n) - O(g(n))์ด๋ฉด kf(n) = O(g(n))์ด๋ค.
๋ฐ๋ผ์ ๋จ์ํ ๋ฐ๋ณต๋ฌธ์ n์ด ์ผ๋ง๋ , n์ด ๋ฌดํ์ ๊ฐ๊น์ธ์๋ก k์ ํฌ๊ธฐ๋ ์๋ฏธ๊ฐ ์์ผ๋ฏ๋ก ๋๊ฐ์ด O(n)์ผ๋ก ํ๊ธฐํฉ๋๋ค.
- ํฉ์ ๋ฒ์น
f(n) = O(h(n))์ด๊ณ g(n) = O(p(n))์ด๋ฉด f(n) + g(n) = O(h(n)) + O(p(n))์ด๋ค. (๋ํด์ง ์ ์๋ค.)
๋ ๊ฐ์ ๊ฐ ๋ฐ๋ณต๋ฌธ์ด ์์ ๋, i์ ๋ฒ์๊ฐ ํ๋๋ n๊น์ง๊ณ ํ๋๋ m๊น์ง๋ผ ํ๋ฉด ๋ ๋ฃจํ๋ฅผ ํฉ์ณ O(n+m)๋ก ํ๊ธฐํ ์ ์์ต๋๋ค.
- ๊ณฑ์ ๋ฒ์น
f(n) = O(h(n))์ด๊ณ g(n) = O(p(n))์ด๋ฉด f(n) _ g(n) = O(h(n)) _ O(p(n))์ด๋ค. (๊ณฑํด์ง ์ ์๋ค.)
๋ ๊ฐ์ ๊ฐ ๋ฐ๋ณต๋ฌธ์ด ์ค์ฒฉ๋์ด ์์ ๋, i๊ฐ n๊น์ง๊ณ j๋ n๊น์ง๋ผ ํ๋ฉด ๋ ๋ฃจํ๋ฅผ ๊ณฑํด O(n^2)๋ก ํ๊ธฐํ ์ ์์ต๋๋ค.
- ๋คํญ ๋ฒ์น
f(n)์ด k์ฐจ ๋คํญ์์ด๋ฉด f(n)์ O(n^k)์ด๋ค.
ํ๋์ ๋ฐ๋ณต๋ฌธ์์ i๊ฐ n _ n _ n๊น์ง๋ผ ํ๋ฉด O(n^3)์ผ๋ก ํ๊ธฐํ ์ ์์ต๋๋ค.
๐ Big-O ํ๊ธฐ๋ฒ ํฌ์ธํธ
- ์์ํญ ๋ฌด์
- ๊ฐ์ฅ ํฐ ํญ ์ธ์ ๋ฌด์
- JS์์ ์ฑ๋ฅ(์์ ์๊ฐ)์ ์๊ธฐ ์ํด์๋ Date๊ฐ์ฒด๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค.
[3] ๋ฐฐ์ด (์์ฐจ ๋ฆฌ์คํธ, Array)
๋ฐฐ์ด์ ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ธ ํํ๋ก ๊ตฌ์ฑ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ฉฐ, index๋ฅผ ๊ฐ์ง๋๋ค.
๋ฐฐ์ด์ ์ถ๊ฐ/ ์ญ์ ๊ฐ ๋ฐ๋ณต๋๋ ์์ ๋ณด๋ค, ํ์์ ์ ๋ฆฌํ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
[3-1] ๋ฐฐ์ด์ ํน์ง
- ๊ณ ์ ๋ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ๋๋ฆด ์ ์์ต๋๋ค.
โ ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ์ฒ๋ผ ๋๋ถ๋ถ์ ์คํฌ๋ฆฝํธ ์ธ์ด(python, Ruby โฆ)๋ ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ์ฆ๊ฐ๋๋๋ก ๋ง๋ค์ด์ ธ ์์ต๋๋ค.
- ์ํ๋ ์์์ index๋ฅผ ์๊ณ ์๋ค๋ฉด O(1)(์์์๊ฐ)๋ก ์์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
- ์์๋ฅผ ์ญ์ ํ๋ฉด ํด๋น index์ ๋น์๋ฆฌ๊ฐ ์๊น๋๋ค.
[3-2] JS ๋ฐฐ์ด
JS์ Array๋ HashMap์ ๊ฐ๊น์ต๋๋ค. (๊ทผ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด ํ์ ์ ๊ฐ๊น์ต๋๋ค.)
๋ํ index๊ฐ number๊ฐ ์๋์ด๋ ๊ด์ฐฎ์ต๋๋ค.
arr["string"] = 10;
arr[false] = 0;
๋ฐฐ์ด์ key๊ฐ ์ถ๊ฐ๋ ๊ฐ๋ฅํ๋ฉฐ, ์๋์ผ๋ก ๋ฌธ์์ด๋ก ๋ณํ๋์ด key๊ฐ ์์ฑ๋ฉ๋๋ค.
๐ ์ด๋ฐ ์์ ์ฌ์ฉ์ ์ถ์ฒํ์ง ์์ง๋ง, ์์๋๋ฉด ์ข์ต๋๋ค.
[4] ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Linked List)
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๊ฐ ์์๋ฅผ ํฌ์ธํฐ๋ก ์ฐ๊ฒฐํ์ฌ ๊ด๋ฆฌํ๋ ์ ํ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
๊ฐ ์์๋ ๋ ธ๋๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ ๋ฐ์ดํฐ ์์ญ๊ณผ ํฌ์ธํฐ ์์ญ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
[4-1] ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํน์ง
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ํน์ง์ ๋ฐฐ์ด๊ณผ ์๋ฐ๋์ด ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ฉํ๋ ํ ์์๋ฅผ ์ ํ ์์ด ์ถ๊ฐํ ์ ์์ต๋๋ค.
- ํ์์ O(n)์ด ์์๋ฉ๋๋ค.
- ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ๋๋ O(1)์ด ์์๋ฉ๋๋ค.
- Singly Linked List, Doubly Linked List, Circular Linked List๊ฐ ์กด์ฌํฉ๋๋ค.
[4-2] ๋ฐฐ์ด๊ณผ ์ฐจ์ด์ฒจ
- ๋ฉ๋ชจ๋ฆฌ ์ฐจ์ด
๋ฐฐ์ด์ ์์ฐจ์ ์ธ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ ์์ญ์ ์ฐ์์ ์ผ๋ก ์ฌ์ฉ
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ฐ์์ ์ด์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ โ ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํด ํฌ์ธํฐ ์ฌ์ฉ
- ์๊ฐ ๋ณต์ก๋
์์ ์ถ๊ฐ/์ญ์ : ๋ฐฐ์ด์ O(n), ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ O(1)
[+] ๊ณผ์ ์ฝ๋
- ๊ณผ์ 1-1 - size ๋ฉ์๋ ๋ง๋ค๊ธฐ
// method
size() {
let curNode = this.head;
let count = 0;
while(curNode !== null){
curNode = curNode.next;
count += 1;
}
console.log('size :',count);
}
// console
linkedList.size(); // 4 ([1, 2, 10, 5]์ผ ๊ฒฝ์ฐ)
- ๊ณผ์ 1-2 - ์์ธ์ฒ๋ฆฌ ํ๊ธฐ
(1) find method, remove method : ํด๋น ์์๊ฐ ์์ ๊ฒฝ์ฐ
(2) insert method : find๋ฅผ ์ฌ์ฉํ๋๋ฐ, ํด๋น ์์๊ฐ ์์ ๊ฒฝ์ฐ
// find method
find(val) {
let curNode = this.head;
try{
while (curNode.val !== val){
curNode = curNode.next;
}
} catch(error) {
console.log("find : ์กด์ฌํ์ง ์๋ ๊ฐ์
๋๋ค.");
return false;
}
return curNode;
}
// remove method
remove(val) {
let preNode = this.head;
while(preNode.next.val !== val) {
preNode = preNode.next;
if (preNode.next === null){
console.log("remove : ์กด์ฌํ์ง ์๋ ๊ฐ์
๋๋ค.")
return false;
}
}
if (preNode.next !== null) {
preNode.next = preNode.next.next;
}
}
// insert method
insert(node, newVal){
if (node === false) {
console.log("insert : ์๋ชป๋ ์์น์
๋๋ค.");
return false;
}
const newNode = new Node(newVal);
newNode.next = node.next;
node.next = newNode;
}
// console
linkedList.remove(3);
linkedList.insert(linkedList.find(10), 10); // [1, 2, 5]์ผ ๊ฒฝ์ฐ
// remove : ํด๋น ์์๊ฐ ์์ต๋๋ค.
// find : ์กด์ฌํ์ง ์๋ ๊ฐ์
๋๋ค.
// insert : ์๋ชป๋ ์์น์
๋๋ค.
(3) display method : ๋น์ด์๋ ๋ฐฐ์ด ์ถ๋ ฅ ์ โ[โ ์๋ต๋๋ ์ด์
//display method
display() {
let curNode = this.head;
let displayString = "[";
while (curNode !== null) {
displayString += `${curNode.val}, `;
curNode = curNode.next;
}
displayString = displayString.substr(0, displayString.length - 2);
if (displayString === ""){
displayString += "[";
}
displayString += "]"
console.log(displayString);
}
// answer
const linkedList = new SingleLinkedList();
linkedList.size(); // 0
linkedList.display(); // []
๐ ๋ถ๋ช ํ ๋ ์์ ๊ฒ ๊ฐ์๋ฐ.. ๊ณ์ ๊ณ ๋ฏผํด๋ณด์
- ๊ณผ์ 2 - DoublyLinkedList ๊ตฌํ
์ฐ์ DoublyLinkedList๋ ์๊ณผ ๋ท๋ถ๋ถ์ ๋ค ์ฐ๊ฒฐํด๋๊ธฐ ๋๋ฌธ์ (์๋ฐฉํฅ) ์๋ถ๋ถ insert, ๋ท๋ถ๋ถ insert๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์ฝ๋๊ฐ ๋๋ฌด ๊ธธ์ด ํต์ฌ์ ์ธ ๋ถ๋ถ๋ง ์ฒจ๋ถํ์ต๋๋ค.
// Node class
class Node {
constructor(val){
this.val = val;
this.previous = null;
this.next = null;
}
}
// insertNext method
insertNext(node, newVal){
if (node === false) {
console.log("insert : ์๋ชป๋ ์์น์
๋๋ค.");
return false;
}
const newNode = new Node(newVal);
newNode.next = node.next;
node.next.previous = newNode;
node.next = newNode;
newNode.previous = node;
}
// insertPrevious method
insertPrevious(node, newVal){
if (node === false) {
console.log("insert : ์๋ชป๋ ์์น์
๋๋ค.");
return false;
}
const newNode = new Node(newVal);
newNode.previous = node.previous;
node.previous.next = newNode;
node.previous = newNode;
newNode.next = node;
}
// console (append ์๋ต)
linkedList.display(); // [1, 2, 5]
linkedList.insertNext(linkedList.find(1), 10);
linkedList.display(); // [1, 10, 2, 5]
linkedList.insertPrevious(linkedList.find(2), 7);
linkedList.display(); // [1, 10, 7, 2, 5]
1 ๋ท๋ถ๋ถ์ ์ถ๊ฐ๋๊ณ 2 ์๋ถ๋ถ์ ์ ์ถ๊ฐ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
- ๊ณผ์ 3 - CircularLinkedList ๊ตฌํ
๋ง์ง๋ง ์์์ next๊ฐ ๋ค์ ์ฒซ ๋ฒ์งธ ์์๋ก ์ฐ๊ฒฐ๋๋ CircularLinkedList ๊ตฌ์กฐ๋ฅผ ๊ตฌํํด๋ด ์๋ค.
์ฝ๋๊ฐ ๋๋ฌด ๊ธธ๊ณ ๋ณ๊ฒฝ์ฌํญ์ด ๋ณ๋ก ์์ผ๋ฏ๋ก append ํจ์๋ง ์ฒจ๋ถํฉ๋๋ค.
// append method
append(newVal) {
const newNode = new Node(newVal);
if (this.head === null){
this.head = newNode;
this.tail = newNode;
newNode.next = this.head; // next ์ํ
}
else {
this.tail.next = newNode;
this.tail = newNode;
newNode.next = this.head;// next ์ํ
}
console.log(newNode);
}
// ์ด์ธ์ ๋ฉ์๋์ curNode === null ์กฐ๊ฑด์ ๋ชจ๋ this.head๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.
// if๋ฌธ ๋ฐ์ผ๋ก ๋์ผํ ์ฝ๋๋ฅผ ๋นผ์ฃผ๋ฉด ๋์ง๋ง, ์๋ฆฌ ์ดํด์ ๋ชฉ์ ์ผ๋ก ์ค๋ณต ์์ฑํ๋ค.
5์ ๊ฐ์ ๊ฐ์ง 5 ์์์ next๊ฐ ์ฒซ๋ฒ์งธ ์์์ธ 1 node๋ก ์ ์ฐ๊ฒฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์๋ก ๋ง๋ size method์ find ์ญ์ ๋ฐ์ ์ ์ฝ์กฐ๊ฑด์ ์ฌ์ฉํด์ ์ ๋๋ก ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋๋ก ํ์ต๋๋ค.
if (curNode === this.head){
break
}
[5] ์คํ (Stack)
LIFO ๊ฐ๋ ์ ๊ฐ์ง ์ ํ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
๋ํ์ ์ผ๋ก Call Stack์ ์๊ฐํ ์ ์์ต๋๋ค.
Stack์ ๋ฐฐ์ด์ push, pop๊ณผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก๋ ํํํ ์ ์์ต๋๋ค.
[6] ์ค์ต ์ฝ๋
function solution(s) {
s_arr = s.split("");
let arr = [];
for (item of s_arr) {
if (item === "(") {
arr.push(item);
} else {
if (arr.length === 0) {
return false;
}
arr.pop();
}
}
if (arr.length >= 1) {
return false;
}
return true;
}
์ง ๋ง์ถ๋ ๋ฌธ์ ๋ stack์ ์ด์ฉํ๋ฉด ํธํ๋ค.
๋๋ฆ ์๋ฃจ์ ๊ณผ ๋น์ทํ๊ฒ ํ์ด์ ๊ธฐ๋ถ์ด ์ข์์ ๐
๋๊ธ๋จ๊ธฐ๊ธฐ