-
(20) 유효한 괄호
github.com/onlybooks/algorithm-interview
★ Easy
[LeetCode]
풀이법
처음에 아래와같이 풀었는데,
class Solution: def isValid(self, s: str) -> bool: check_dic = { ")":"(", "]":"[", "}":"{" } stack = [s[0]] for s_ in s[1:]: if s_ not in check_dic or not stack or stack[-1] != check_dic[s_]: stack.append(s_) else: del stack[-1] if stack: return False return True
확실히 책에 있는 방법이 깔끔하다.( 내꺼는 너무 if가 덕지덕지다.)
마지막에 if로 return을 결정하지 않고 len==0을 이용한 방법도 우아(책에서 표현하는..)한 방식같다.
java
import java.util.Stack; class Solution { public boolean isValid(String s) { Stack<String> stack = new Stack<>(); Map<String, String> table = new HashMap<String, String>(); table.put("]","["); table.put(")","("); table.put("}","{"); for (char c : s.toCharArray()) { String string = String.valueOf(c); if(table.containsKey(string) == false) stack.push(string); else if (stack.isEmpty() || (!stack.pop().equals(table.get(string)))) return false; } return stack.size()==0; } }
'2021년 > 알고리즘' 카테고리의 다른 글
[파이썬 알고리즘 인터뷰] 일일 온도 (0) 2021.04.05 [파이썬 알고리즘 인터뷰] (0) 2021.04.02 [파이썬 알고리즘 인터뷰] 역순 연결리스트 2 (0) 2021.03.31 [파이썬 알고리즘 인터뷰] 역순 연결리스트 (0) 2021.03.31 [파이썬 알고리즘 인터뷰] 페어의 노드 스왑 (0) 2021.03.23