[LeetCode] 20. Valid Parentheses (Easy)
문제로 내가 푼 것 틀림 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 class Solution { public boolean isValid(String s) { Map<Character, Integer> patterns = new HashMap(); Stack<Character> stack = new Stack<>(); int sum = 0; patterns.put('(', 1); patterns.put(')', 2); patterns.put('{', 3); patterns.put('}', 4); patterns.put('[', 5); patterns.put(']', 6); if(s.length() % 2 == 1) return false; for(int i = 0; i < s.length(); i++, i++) { if(patterns.get(s.charAt(i)) % 2 == 1) { stack.push(s.charAt(i)); // sum += patterns.get(s.charAt(i)).intValue() + 1; } else if(patterns.get(s.charAt(i)) % 2 == 0) { // sum -= patterns.get(s.charAt(i)).intValue(); if(stack.isEmpty()) return false; Character temp = stack.pop(); if(patterns.get(temp) + 1 != patterns.get(s.charAt(i))) return false; } } if(sum != 0) return false; return true; } } 답안1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); for(char c : s.toCharArray()) { if(c == '(') stack.push(')'); else if(c == '[') stack.push(']'); else if(c == '{') stack.push('}'); else if(stack.isEmpty()) return false; else if(stack.pop() != c) return false; } return stack.isEmpty(); } } 참고 1 else if(stack.isEmpty()) return false; 답안에서 위 조건과 아래 조건의 순서가 바뀌면 에러가 발생한다. ...