Skip to content

Commit 4fa8a1d

Browse files
authored
Merge pull request #1861 from youngduck/main
[youngduck] WEEK 06 solutions
2 parents 9cf15ca + b984bc3 commit 4fa8a1d

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

โ€Žvalid-parentheses/youngduck.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*/
5+
var isValid = function (s) {
6+
// stack๋ฌธ์ œ. open,close์— ๋”ฐ๋ผ ์Šคํƒ์ฒ˜๋ฆฌ
7+
// ์ตœ์ข… stack ๋น„์›Œ์ ธ์žˆ๋Š”์ง€ ๋งˆ์ง€๋ง‰ ํ™•์ธ๊นŒ์ง€.
8+
const stack = [];
9+
// open,close Bracket index ์œ„์น˜๋กœ ์ง๊ถ ํŒ๋‹จํ• ์˜ˆ์ •
10+
const openBracket = ['(', '[', '{'];
11+
const closeBracket = [')', ']', '}'];
12+
// ๋ฐ˜ํ™˜ํ•  ๊ฒฐ๊ณผ๊ฐ’ flag
13+
let result = true;
14+
15+
[...s].map((item) => {
16+
// indexOf์ž์ฒด๋Š” ์„ ํ˜•๊ฒ€์ƒ‰์ด๋ผ O(n)์ด์ง€๋งŒ ๋ฐ์ดํ„ฐ ์–‘์ด 3์œผ๋กœ ๊ณ ์ •๋˜์–ด์žˆ์œผ๋ฏ€๋กœ O(1)๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ
17+
const itemIndexAtOpenBracket = openBracket.indexOf(item);
18+
const itemIndexAtCloseBracket = closeBracket.indexOf(item);
19+
// openBracket ํƒ€์ž…
20+
if (itemIndexAtOpenBracket > -1) {
21+
// push,pop ๋ชจ๋‘ O(1) ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง. ๋์— ์š”์†Œ ์ถ”๊ฐ€์ œ๊ฑฐ์ด๋ฏ€๋กœ
22+
stack.push(item);
23+
}
24+
// clseBracket ํƒ€์ž…
25+
else if (itemIndexAtCloseBracket > -1) {
26+
const target = stack.pop();
27+
if (target !== openBracket[itemIndexAtCloseBracket]) {
28+
result = false;
29+
}
30+
}
31+
});
32+
33+
if (stack.length !== 0) {
34+
result = false;
35+
}
36+
37+
return result;
38+
};
39+
40+
// ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)
41+
// ๊ณต๊ฐ„๋ณต์žก๋„ : O(n)

0 commit comments

Comments
ย (0)