|
| 1 | +/*** |
| 2 | + * |
| 3 | + * @problem |
| 4 | + * - ์ฌ๋ ๊ดํธ์ ๋ซ๋ ๊ดํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ ์ด๋ฃจ๋์ง ํ์ธํ๋ ๋ฌธ์ ์
๋๋ค. |
| 5 | + * |
| 6 | + * @constraints |
| 7 | + * - ๋ฌธ์์ด์ ์ค์ง '(', ')', '{', '}', '[', ']' ๋ฌธ์๋ก๋ง ๊ตฌ์ฑ๋ฉ๋๋ค. |
| 8 | + * - ๋ฌธ์์ด์ ๊ธธ์ด๋ 0 ์ด์ 10^4 ์ดํ์
๋๋ค. |
| 9 | + * |
| 10 | + * @example |
| 11 | + * - ์
๋ ฅ: "()" |
| 12 | + * ์ถ๋ ฅ: true |
| 13 | + * - ์
๋ ฅ: "(){}" |
| 14 | + * ์ถ๋ ฅ: true |
| 15 | + * - ์
๋ ฅ: "(]" |
| 16 | + * ์ถ๋ ฅ: false |
| 17 | + * - ์
๋ ฅ: "([)]" |
| 18 | + * ์ถ๋ ฅ: false |
| 19 | + * - ์
๋ ฅ: "{}" |
| 20 | + * ์ถ๋ ฅ: true |
| 21 | + * |
| 22 | + * @description |
| 23 | + * - ์ฌ๋ ๊ดํธ๋ ์คํ์ ์ถ๊ฐํ๊ณ , ๋ซ๋ ๊ดํธ๊ฐ ๋์ค๋ฉด ์คํ์ ๋งจ ์ ์์(๊ฐ์ฅ ์ต๊ทผ์ ์ถ๊ฐ๋ ์ฌ๋ ๊ดํธ)์ ๋น๊ตํฉ๋๋ค. |
| 24 | + * - ๋ซ๋ ๊ดํธ์ ์คํ์ ๋งจ ์ ์์๊ฐ ์ง์ ์ด๋ฃจ์ง ์์ผ๋ฉด ์ ํจํ์ง ์์ ๋ฌธ์์ด๋ก ํ๋จํฉ๋๋ค. |
| 25 | + * - ๋ฌธ์์ด์ ๋ชจ๋ ์ํํ ํ ์คํ์ด ๋น์ด ์์ผ๋ฉด ์ ํจํ ๊ดํธ ๋ฌธ์์ด์
๋๋ค. |
| 26 | + * |
| 27 | + * @complexity |
| 28 | + * - ์๊ฐ ๋ณต์ก๋: O(n) |
| 29 | + * ๋ฌธ์์ด์ ํ ๋ฒ๋ง ์ํํ๋ฏ๋ก ์๊ฐ ๋ณต์ก๋๋ O(n)์
๋๋ค. |
| 30 | + * - ๊ณต๊ฐ ๋ณต์ก๋: O(n) |
| 31 | + * ์คํ์ ์ ์ฅ๋๋ ์ฌ๋ ๊ดํธ์ ์ต๋ ๊ฐ์๋ ๋ฌธ์์ด ๊ธธ์ด์ ๋น๋กํ๋ฏ๋ก ๊ณต๊ฐ ๋ณต์ก๋๋ O(n)์
๋๋ค. |
| 32 | + * |
| 33 | + */ |
| 34 | +function isValid(s: string): boolean { |
| 35 | + // ๊ดํธ ์์ ์ ์ฅํ๋ Map ์์ฑ |
| 36 | + const map = new Map<string, string>([ |
| 37 | + [')', '('], |
| 38 | + ['}', '{'], |
| 39 | + [']', '['] |
| 40 | + ]); |
| 41 | + |
| 42 | + // ์คํ ์ด๊ธฐํ |
| 43 | + const stack: string[] = []; |
| 44 | + |
| 45 | + // ๋ฌธ์์ด์ ์ํ |
| 46 | + for (const char of s) { |
| 47 | + if (map.has(char)) { |
| 48 | + // ๋ซ๋ ๊ดํธ์ผ ๊ฒฝ์ฐ ์คํ์์ popํ์ฌ ๋น๊ต |
| 49 | + const topElement = stack.length > 0 ? stack.pop() : undefined; |
| 50 | + if (topElement !== map.get(char)) { |
| 51 | + return false; // ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒฝ์ฐ |
| 52 | + } |
| 53 | + } else { |
| 54 | + // ์ฌ๋ ๊ดํธ์ผ ๊ฒฝ์ฐ ์คํ์ push |
| 55 | + stack.push(char); |
| 56 | + } |
| 57 | + } |
| 58 | + |
| 59 | + // ์คํ์ด ๋น์ด ์์ผ๋ฉด ์ ํจํ ๊ดํธ(๋ชจ๋ ์ฌ๋ ๊ดํธ๊ฐ ๋ซ๋ ๊ดํธ์ ์ง์ ์ด๋ฃธ) |
| 60 | + return stack.length === 0; |
| 61 | +} |
| 62 | + |
| 63 | +console.log(isValid("()")); // true |
| 64 | +console.log(isValid("(){}")); // true |
| 65 | +console.log(isValid("(]")); // false |
| 66 | +console.log(isValid("([)]")); // false |
| 67 | +console.log(isValid("{[]}")); // true |
0 commit comments