Skip to content

Commit 261ed80

Browse files
committed
valid parentheses solution
1 parent 2ed89c4 commit 261ed80

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
"""
2+
Problem : Valid Parentheses
3+
์œ ํ˜• : ์Šคํƒ
4+
๋ฌธ์ œ ํ•ด์„
5+
* ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง์ง€์–ด์ ธ ์žˆ๋Š”์ง€ ํŒ๋‹จ
6+
* 3๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ๊ด„ํ˜ธ: (), {}, []
7+
* ์—ฌ๋Š” ๊ด„ํ˜ธ๋Š” ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๋‹ซ๋Š” ๊ด„ํ˜ธ๋กœ ๋‹ซํ˜€์•ผ ํ•จ
8+
* ๊ด„ํ˜ธ๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ๋‹ซํ˜€์•ผ ํ•จ
9+
10+
ํ•ด๊ฒฐ ์ „๋žต
11+
์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•œ๋‹ค.
12+
* ์—ฌ๋Š” ๊ด„ํ˜ธ๋ฅผ ๋งŒ๋‚˜๋ฉด ์Šคํƒ์— push
13+
* ๋‹ซ๋Š” ๊ด„ํ˜ธ๋ฅผ ๋งŒ๋‚˜๋ฉด ์Šคํƒ์˜ top๊ณผ ๋งค์นญ ํ™•์ธ
14+
* ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด โ†’ ๋งค์นญ๋˜๋Š” ์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์—†์Œ (False)
15+
* top๊ณผ ์ข…๋ฅ˜๊ฐ€ ๋‹ค๋ฅด๋ฉด โ†’ ์ž˜๋ชป๋œ ์ˆœ์„œ (False)
16+
* ๋งค์นญ๋˜๋ฉด โ†’ pop์œผ๋กœ ์ œ๊ฑฐ
17+
* ๋ชจ๋“  ์ฒ˜๋ฆฌ ํ›„ ์Šคํƒ์ด ๋น„์–ด์žˆ์–ด์•ผ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์—ด
18+
19+
๊ตฌํ˜„
20+
๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋‹ซ๋Š” ๊ด„ํ˜ธ์™€ ์—ฌ๋Š” ๊ด„ํ˜ธ์˜ ๋งค์นญ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•œ๋‹ค.
21+
* matching = {')': '(', '}': '{', ']': '['}
22+
* ๋‹ซ๋Š” ๊ด„ํ˜ธ๋ฅผ key๋กœ ์‚ฌ์šฉํ•˜์—ฌ O(1)์— ๋งค์นญ ํ™•์ธ ๊ฐ€๋Šฅ
23+
24+
์ฃผ์˜ํ•  ์ 
25+
* ์—ฌ๋Š” ๊ด„ํ˜ธ๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ โ†’ ์Šคํƒ์— ๋‚จ์•„์žˆ์œผ๋ฏ€๋กœ False
26+
์˜ˆ: "(((" โ†’ stack = ['(', '(', '(']
27+
* ๋‹ซ๋Š” ๊ด„ํ˜ธ๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ โ†’ ์Šคํƒ์ด ๋น„์–ด์žˆ์–ด์„œ False
28+
์˜ˆ: ")))" โ†’ stack์ด ๋น„์–ด์žˆ์Œ
29+
* ์ˆœ์„œ๊ฐ€ ์ž˜๋ชป๋œ ๊ฒฝ์šฐ โ†’ ๋งค์นญ ์‹คํŒจ๋กœ False
30+
์˜ˆ: "([)]" โ†’ ']'๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ top์ด '['์ธ๋ฐ ')'๋ฅผ ๊ธฐ๋Œ€
31+
"""
32+
33+
class Solution:
34+
def isValid(self, s: str) -> bool:
35+
stack = []
36+
# ๋‹ซ๋Š” ๊ด„ํ˜ธ : ์—ฌ๋Š” ๊ด„ํ˜ธ ๋งคํ•‘
37+
matching = {')': '(', '}': '{', ']': '['}
38+
39+
for char in s:
40+
if char in matching: # ๋‹ซ๋Š” ๊ด„ํ˜ธ์ธ ๊ฒฝ์šฐ
41+
# ์Šคํƒ์ด ๋น„์–ด์žˆ๊ฑฐ๋‚˜ ๋งค์นญ ์•ˆ๋˜๋ฉด False
42+
if not stack or stack[-1] != matching[char]:
43+
return False
44+
stack.pop() # ๋งค์นญ ์„ฑ๊ณต์‹œ ์ œ๊ฑฐ
45+
else: # ์—ฌ๋Š” ๊ด„ํ˜ธ์ธ ๊ฒฝ์šฐ
46+
stack.append(char) # ์Šคํƒ์— ์ถ”๊ฐ€
47+
48+
# ๋ชจ๋“  ๊ด„ํ˜ธ๊ฐ€ ๋งค์นญ๋˜์—ˆ์œผ๋ฉด ์Šคํƒ์ด ๋น„์–ด์žˆ์–ด์•ผ ํ•จ
49+
return len(stack) == 0

0 commit comments

Comments
ย (0)