File tree Expand file tree Collapse file tree 1 file changed +63
-0
lines changed
Expand file tree Collapse file tree 1 file changed +63
-0
lines changed Original file line number Diff line number Diff line change 1+ """
2+ [결과 요약]
3+ # 재시도횟수: 3회
4+ 1. 조건에는 맞지만 메모리를 많이 사용 / 빈번한 False 리턴을 사용한 방법:: O(n)/O(n)
5+ 2. 1의 로직의 가독성과 메모리 사용량 개선하기: O(n)/O(n)
6+ 3. 실제로는 if/else문으로 풀어도 최적의 성능이 나오면서 가독성 측면에서도 유리: : O(n)/O(n)
7+ """
8+
9+
10+ class Solution :
11+ def isValid (self , s : str ) -> bool :
12+ character_map = {"(" : ")" , "{" : "}" , "[" : "]" }
13+ s_list = []
14+
15+ for c in s :
16+ if c in character_map :
17+ s_list .append (character_map [c ])
18+
19+ else :
20+ if len (s_list ) > 0 :
21+ if s_list .pop () == c :
22+ continue
23+ return False
24+
25+ return len (s_list ) == 0
26+
27+
28+ """
29+ # 실제로는 복잡한 로직 없이 if/else로 직접 비교하는 쪽이 성능과 코드 가독성 면에서 모두 유리
30+ class Solution:
31+ def isValid(self, s: str) -> bool:
32+ s_list = []
33+
34+ for c in s:
35+ if c == '(':
36+ s_list.append(')')
37+ elif c == '{':
38+ s_list.append('}')
39+ elif c == '[':
40+ s_list.append(']')
41+ else:
42+ if not s_list or s_list.pop() != c:
43+ return False
44+ """
45+
46+
47+ if __name__ == "__main__" :
48+ test_cases = [
49+ ("{{{[[[(([{{}}]))]]]}}}" , True ),
50+ ("{{{]}}" , False ),
51+ ("{" , False ),
52+ ("}}]" , False ),
53+ ("{}[]()" , True ),
54+ ("{[]}[()]" , True ),
55+ ]
56+
57+ solution = Solution ()
58+ for idx , case_ in enumerate (test_cases ):
59+ s , answer = case_
60+ result = solution .isValid (s )
61+ assert (
62+ answer == result
63+ ), f"Test Case { idx } Failed: Expected { answer } , Got { result } "
You can’t perform that action at this time.
0 commit comments