Skip to content

Commit e421bbb

Browse files
committed
add: solve #222 Valid Parentheses with ts
1 parent 9260d77 commit e421bbb

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด s๊ฐ€ ์œ ํšจํ•œ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ธ์ง€ ํ™•์ธ.
3+
* @param {string} s - ์ž…๋ ฅ ๋ฌธ์ž์—ด (๊ด„ํ˜ธ๋งŒ ํฌํ•จ๋จ)
4+
* @returns {boolean} - ์œ ํšจํ•œ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ฉด true, ์•„๋‹ˆ๋ฉด false
5+
*
6+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
7+
* - ๋ฌธ์ž์—ด์˜ ๊ธธ์ด n๋งŒํผ ํ•œ ๋ฒˆ์”ฉ ์ˆœํšŒํ•˜๋ฉฐ, ๊ฐ ๋ฌธ์ž์— ๋Œ€ํ•ด ๊ณ ์ •๋œ ์—ฐ์‚ฐ(์Šคํƒ ์กฐ์ž‘)์„ ์ˆ˜ํ–‰.
8+
*
9+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n)
10+
* - ์ตœ์•…์˜ ๊ฒฝ์šฐ ์Šคํƒ์— ์—ฌ๋Š” ๊ด„ํ˜ธ n๊ฐœ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ O(n)์˜ ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
11+
*/
12+
function isValid(s: string): boolean {
13+
if (s.length % 2 !== 0) return false;
14+
if (s === '') return true;
15+
16+
const openingBrackets = ['(', '{', '['];
17+
const bracketSets: Record<string, string> = { '(': ')', '{': '}', '[': ']' };
18+
const bracketStack: string[] = [];
19+
20+
for (const char of s) {
21+
// ์—ฌ๋Š” ๊ฒฝ์šฐ, ์Šคํƒ์— ์ถ”๊ฐ€
22+
if (openingBrackets.includes(char)) {
23+
bracketStack.push(char);
24+
} else {
25+
// ๋‹ซ๋Š” ๊ด„ํ˜ธ ๊ฒฝ์šฐ, ์Šคํƒ์—์„œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€ํ•œ ์—ฌ๋Š” ๊ด„ํ˜ธ๋ฅผ ๊บผ๋ƒ„
26+
const lastOpeningBracket = bracketStack.pop();
27+
// bracketSets ๊ณผ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ด„ํ˜ธ์ธ ๊ฒฝ์šฐ
28+
if (bracketSets[lastOpeningBracket!] !== char) {
29+
return false;
30+
}
31+
}
32+
}
33+
34+
// ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด ๋ชจ๋“  ๊ด„ํ˜ธ๊ฐ€ ์œ ํšจํ•œ ๊ฒฝ์šฐ
35+
return bracketStack.length === 0;
36+
}

0 commit comments

Comments
ย (0)