Skip to content

Commit 8b70a86

Browse files
committed
스택, 큐, 데크 나의 풀이
1 parent 85cd96f commit 8b70a86

6 files changed

Lines changed: 83 additions & 12 deletions

File tree

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,28 @@
11
function solution(s) {
2-
let answer = '';
2+
let answer = 0;
3+
let reg = /[^0-9]/;
4+
let stack = [];
35

4-
return answer;
6+
for (let i = 0; i < s.length; i++) {
7+
// s[i]가 숫자가 아니라면
8+
if (!reg.test(s[i])) {
9+
stack.push(parseInt(s[i]));
10+
} else {
11+
let a = 0,
12+
b = 0;
13+
b = stack.pop();
14+
a = stack.pop();
15+
if (s[i] === '*') {
16+
stack.push(a * b);
17+
} else if (s[i] === '/') {
18+
stack.push(a / b);
19+
} else if (s[i] === '+') {
20+
stack.push(a + b);
21+
} else {
22+
stack.push(a - b);
23+
}
24+
}
25+
}
26+
return stack.pop();
527
}
628
console.log(solution('352+*9-')); // 12

JS/05.스택,큐,테크/04.연속된문자지우기.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
function solution(s) {
2-
let answer = '';
2+
let answer = [s[0]];
33

4+
for (let i = 1; i < s.length; i++) {
5+
let top = answer[answer.length - 1];
6+
if (s[i] === top) answer.pop();
7+
else answer.push(s[i]);
8+
}
49
return answer;
510
}
611
console.log(solution('acbbcaa')); // a
Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
1-
function solution(s) {
2-
let answer = '';
3-
1+
function solution(n, k) {
2+
let answer;
3+
let temp = [];
4+
for (let i = 1; i <= n; i++) {
5+
temp[i - 1] = i;
6+
}
7+
temp[0] = -1;
8+
let pos = 0;
9+
let cnt = n;
10+
while (cnt) {
11+
for (let i = 1; i <= k; i++) {
12+
temp[pos + k] == 0;
13+
}
14+
cnt--;
15+
}
16+
console.log(temp);
417
return answer;
518
}
619
console.log(solution(8, 3)); // 7
Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
1-
function solution(s) {
2-
let answer = '';
1+
function solution(need, plan) {
2+
let answer;
33

4-
return answer;
4+
let stack = [];
5+
// stack에 need 순서를 거꾸로 입력해준다. CBA -> ABC
6+
for (let i = 0; i < need.length; i++) {
7+
stack[need.length - 1 - i] = need[i];
8+
}
9+
10+
// C, B, A 순서대로 일치하는 것을 찾으면 pop해준다.
11+
for (let i = 0; i < plan.length; i++) {
12+
let top = stack[stack.length - 1];
13+
if (top === plan[i]) stack.pop();
14+
}
15+
16+
// 만약 stack의 length가 0이라면 순서대로 수업계획을 잘 짠 것이다.
17+
if (stack.length === 0) return 'YES';
18+
else return 'NO';
519
}
620
console.log(solution('CBA', 'CBDAGE')); // YES
721
console.log(solution('CBA', 'CBDBAGE')); // YES

JS/05.스택,큐,테크/07.영화관람.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
1-
function solution(s) {
1+
function solution(nums) {
22
let answer = '';
3+
let stack = [];
4+
for (let i = 0; i < nums.length; i++) {
5+
if (nums[i] >= nums[i + 1]) {
6+
stack.pop();
7+
stack.push(i+1, nums[i]);
8+
} else {
9+
if (stack[0][1] > nums[i])
10+
}
11+
}
12+
console.log(stack);
313

414
return answer;
515
}
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1-
function solution(s) {
1+
function solution(s, m) {
22
let answer = '';
33

4-
return answer;
4+
let cnt = 0;
5+
for (let i = 0; i < s.length; i++) {
6+
for (let j = i + 1; j < s.length; j++) {
7+
// j와 i의 차이가 m보다 작거나 같아야하고, s[i]번 문자열의 길이와 j번째 문자열의 길이가 같아야 한다.
8+
if (j - i <= m && s[i].length === s[j].length) cnt++;
9+
}
10+
}
11+
return cnt;
512
}
613
console.log(solution(['back', 'seen', 'big', 'good', 'size'], 2)); // 3
714
console.log(solution(['back', 'seen', 'good', 'size'], 2)); // 5

0 commit comments

Comments
 (0)