Skip to content

Commit 5e01451

Browse files
authored
[oh-chaeyeon] 25.01.09 (#21)
* 배열 자르기 / 기초 * 배열 원소의 길이 / 기초 * 배열 회전시키기 / 기초 * 중복된 숫자 개수 / 기초 * 제일 작은 수 제거하기 / 중급 * 행렬의 덧셈 / 중급 * 나누어 떨어지는 숫자 배열 / 중급 * 행렬의 곱셈 / 심화 * 교점에 별 만들기 / 심화 * n^2 배열 자르기 / 심화 * String Reversal / 기초 * Control Z / 기초 * Hate English / 기초 * String Calculation / 기초 * Crane Game / 중급 * Valid Parentheses / 중급 * Dart Game / 중급 * Rotate Parentheses / 심화 * Stock Price / 심화 * Delivery Box / 심화
1 parent d26ad2f commit 5e01451

File tree

10 files changed

+167
-0
lines changed

10 files changed

+167
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
function solution(s) {
2+
const elements = s.split(" ");
3+
let total = 0;
4+
5+
for (let i = 0; i < elements.length; i++) {
6+
if (elements[i] === "Z") {
7+
total -= parseInt(elements[i - 1]);
8+
} else {
9+
total += parseInt(elements[i]);
10+
}
11+
}
12+
13+
return total;
14+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
function solution(board, moves) {
2+
const basket = [];
3+
let count = 0;
4+
5+
for (let move of moves) {
6+
const column = move - 1;
7+
8+
for (let i = 0; i < board.length; i++) {
9+
if (board[i][column] !== 0) {
10+
const doll = board[i][column];
11+
board[i][column] = 0;
12+
13+
if (basket[basket.length - 1] === doll) {
14+
basket.pop();
15+
count += 2;
16+
} else {
17+
basket.push(doll);
18+
}
19+
break;
20+
}
21+
}
22+
}
23+
24+
return count;
25+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
function solution(dartResult) {
2+
const stack = [];
3+
let i = 0;
4+
5+
while (i < dartResult.length) {
6+
const isTen = dartResult[i] === "1" && dartResult[i + 1] === "0";
7+
let score = isTen ? 10 : parseInt(dartResult[i]);
8+
i += isTen ? 2 : 1;
9+
10+
const bonus = dartResult[i++];
11+
score **= bonus === "S" ? 1 : bonus === "D" ? 2 : 3;
12+
13+
if (dartResult[i] === "*" || dartResult[i] === "#") {
14+
score *= dartResult[i] === "*" ? 2 : -1;
15+
if (dartResult[i++] === "*" && stack.length) {
16+
stack[stack.length - 1] *= 2;
17+
}
18+
}
19+
20+
stack.push(score);
21+
}
22+
23+
return stack.reduce((sum, cur) => sum + cur, 0);
24+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
function solution(order) {
2+
let stack = [];
3+
let current = 1;
4+
let count = 0;
5+
6+
for (let box of order) {
7+
while (current <= box) {
8+
stack.push(current++);
9+
}
10+
if (stack.pop() === box) {
11+
count++;
12+
} else {
13+
break;
14+
}
15+
}
16+
17+
return count;
18+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
function solution(numbers) {
2+
return parseInt(
3+
numbers.replace(
4+
/zero|one|two|three|four|five|six|seven|eight|nine/g,
5+
(match) => {
6+
const numWords = {
7+
zero: "0",
8+
one: "1",
9+
two: "2",
10+
three: "3",
11+
four: "4",
12+
five: "5",
13+
six: "6",
14+
seven: "7",
15+
eight: "8",
16+
nine: "9",
17+
};
18+
return numWords[match];
19+
}
20+
)
21+
);
22+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
function solution(s) {
2+
let answer = 0;
3+
for (let i = 0; i < s.length; i++) {
4+
const rotated = s.slice(i) + s.slice(0, i);
5+
if (isValid(rotated)) answer++;
6+
}
7+
return answer;
8+
}
9+
10+
function isValid(str) {
11+
const stack = [];
12+
for (let c of str) {
13+
if ("([{".includes(c)) stack.push(c);
14+
else if (!stack.length || !isPair(stack.pop(), c)) return false;
15+
}
16+
return stack.length === 0;
17+
}
18+
19+
function isPair(open, close) {
20+
return (
21+
(open === "(" && close === ")") ||
22+
(open === "[" && close === "]") ||
23+
(open === "{" && close === "}")
24+
);
25+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
function solution(prices) {
2+
const answer = Array(prices.length).fill(0);
3+
const stack = [];
4+
5+
prices.forEach((price, i) => {
6+
while (stack.length && prices[stack[stack.length - 1]] > price) {
7+
const idx = stack.pop();
8+
answer[idx] = i - idx;
9+
}
10+
stack.push(i);
11+
});
12+
13+
stack.forEach((idx) => {
14+
answer[idx] = prices.length - 1 - idx;
15+
});
16+
17+
return answer;
18+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
function solution(my_string) {
2+
return eval(my_string);
3+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
function solution(my_string) {
2+
return my_string.split("").reverse().join("");
3+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
function solution(s) {
2+
const stack = [];
3+
4+
for (let char of s) {
5+
if (char === "(") {
6+
stack.push(char);
7+
} else if (stack.length > 0) {
8+
stack.pop();
9+
} else {
10+
return false;
11+
}
12+
}
13+
14+
return stack.length === 0;
15+
}

0 commit comments

Comments
 (0)