diff --git a/README.md b/README.md index db105b3..c1472b0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## 1 -### 문제 - 주식가격 +### 문제 - 짝지어 제거하기 ### 알고리즘 설계 @@ -9,25 +9,37 @@ ### 풀이 코드 ```jsx -function solution(prices) { - const len = prices.length; - const result = new Array(len).fill(0); - const stack = []; - - for (let i = 0; i < len; i++) { - while (stack.length && prices[i] < prices[stack[stack.length - 1]]) { - let top = stack.pop(); - let diff = i - top; - result[top] = diff; - } - stack.push(i); +class Stack { + constructor() { + this.storage = new Object(); + this.size = 0; } - while (stack.length) { - const top = stack.pop(); - result[top] = len - 1 - top; + push(element) { + this.size++; + this.storage[this.size] = element; + } + pop() { + let removed = this.storage[this.size]; + delete this.storage[this.size]; + this.size--; + return removed; + } + top() { + return this.storage[this.size]; } - - return result; +} +function solution(s) { + const stack = new Stack(); + for (let i = 0; i < s.length; i++) { + if (stack.top() === s[i]) { + stack.pop(); + continue; + } else { + stack.push(s[i]); + continue; + } + } + return stack.size > 0 ? 0 : 1; } ``` @@ -41,32 +53,21 @@ function solution(prices) { ## 2 -### 문제 - 스킬트리 +### 문제 - 튜플 ### 알고리즘 설계 ### 풀이 코드 ```jsx -function solution(skill, skill_trees) { - let result = 0; +function solution(s) { + let set = new Set(); - for (const tree of skill_trees) { - const queue = [...skill]; - let isValid = true; - - for (const s of tree) { - if (skill.includes(s)) { - if (s !== queue[0]) { - isValid = false; - break; - } - queue.shift(); - } + for (let i = 0; i < s.length; i++) { + if (isNaN(s[i]) === false) { + set.add(s[i]); } - if (isValid) result++; } - return result; } ``` diff --git "a/week38/\354\212\244\355\202\254\355\212\270\353\246\254.js" "b/week38/\354\212\244\355\202\254\355\212\270\353\246\254.js" deleted file mode 100644 index 7c66c54..0000000 --- "a/week38/\354\212\244\355\202\254\355\212\270\353\246\254.js" +++ /dev/null @@ -1,20 +0,0 @@ -function solution(skill, skill_trees) { - let result = 0; - - for (const tree of skill_trees) { - const queue = [...skill]; - let isValid = true; - - for (const s of tree) { - if (skill.includes(s)) { - if (s !== queue[0]) { - isValid = false; - break; - } - queue.shift(); - } - } - if (isValid) result++; - } - return result; -} diff --git "a/week38/\354\243\274\354\213\235\352\260\200\352\262\251.js" "b/week38/\354\243\274\354\213\235\352\260\200\352\262\251.js" deleted file mode 100644 index 07c712b..0000000 --- "a/week38/\354\243\274\354\213\235\352\260\200\352\262\251.js" +++ /dev/null @@ -1,20 +0,0 @@ -function solution(prices) { - const len = prices.length; - const result = new Array(len).fill(0); - const stack = []; - - for (let i = 0; i < len; i++) { - while (stack.length && prices[i] < prices[stack[stack.length - 1]]) { - let top = stack.pop(); - let diff = i - top; - result[top] = diff; - } - stack.push(i); - } - while (stack.length) { - const top = stack.pop(); - result[top] = len - 1 - top; - } - - return result; -} diff --git "a/week39/\b\354\247\235\354\247\200\354\226\264\354\240\234\352\261\260\355\225\230\352\270\260.js" "b/week39/\b\354\247\235\354\247\200\354\226\264\354\240\234\352\261\260\355\225\230\352\270\260.js" new file mode 100644 index 0000000..d8caf09 --- /dev/null +++ "b/week39/\b\354\247\235\354\247\200\354\226\264\354\240\234\352\261\260\355\225\230\352\270\260.js" @@ -0,0 +1,32 @@ +class Stack { + constructor() { + this.storage = new Object(); + this.size = 0; + } + push(element) { + this.size++; + this.storage[this.size] = element; + } + pop() { + let removed = this.storage[this.size]; + delete this.storage[this.size]; + this.size--; + return removed; + } + top() { + return this.storage[this.size]; + } +} +function solution(s) { + const stack = new Stack(); + for (let i = 0; i < s.length; i++) { + if (stack.top() === s[i]) { + stack.pop(); + continue; + } else { + stack.push(s[i]); + continue; + } + } + return stack.size > 0 ? 0 : 1; +} diff --git "a/week38/\355\203\235\353\260\260\354\203\201\354\236\220.js" "b/week39/\355\203\235\353\260\260\354\203\201\354\236\220.js" similarity index 100% rename from "week38/\355\203\235\353\260\260\354\203\201\354\236\220.js" rename to "week39/\355\203\235\353\260\260\354\203\201\354\236\220.js" diff --git "a/week39/\355\212\234\355\224\214.js" "b/week39/\355\212\234\355\224\214.js" new file mode 100644 index 0000000..8e312ed --- /dev/null +++ "b/week39/\355\212\234\355\224\214.js" @@ -0,0 +1,10 @@ +function solution(s) { + let set = new Set(); + + for(let i = 0; i < s.length; i++){ + if(isNaN(s[i])=== false){ + set.add(s[i]); + } + } + +} \ No newline at end of file