-
자알인 - 스택 & 큐자료구조와 알고리즘/알고리즘 2024. 1. 30. 12:08
1. 유효한 괄호
- 내 풀이(1ms)
public boolean isValid(String s) { //먼저들어간 괄호는 무조건 이전 괄호와 짝이어야함 //사실상 거의 뭐 팰린드롬 검사지 char[] chararr = s.toCharArray(); Deque<Character> deq = new ArrayDeque<>(); for(char p : chararr){ if(p == '(' || p == '[' || p == '{'){ deq.push(p); }else{ if(deq.isEmpty()){ return false; } if(p == ')' && deq.peek() == '('){ deq.pop(); }else if(p == ']' && deq.peek() == '['){ deq.pop(); }else if(p == '}' && deq.peek() =='{'){ deq.pop(); }else{ return false; } } } if(!deq.isEmpty()){ return false; } return true; }
- 스택과 Map을 이용한 풀이(2ms)
public boolean isValid(String s) { Deque<Character> stack = new ArrayDeque<>(); Map<Character,Character> table = new HashMap<>(); table.put(')','('); table.put('}','{'); table.put(']','['); //(){} for(int i=0; i<s.length(); i++){ // 닫힘 괄호가 아닌 경우 스택에 푸시 스택에 (이 푸쉬됨 if(!table.containsKey(s.charAt(i))){ stack.push(s.charAt(i)); //닫힘괄호인 경우 ) 비교함 맵에 (와 charAt }else if(stack.isEmpty() || table.get(s.charAt(i)) != stack.pop()){ return false; } } return stack.size() == 0; }
2. 중복 문자 제거
'자료구조와 알고리즘 > 알고리즘' 카테고리의 다른 글
완탐 (0) 2024.04.12 자알인 (1) 코딩테스트 팁 (0) 2024.01.03 다이나믹 프로그래밍 (0) 2023.04.13 여러가지 수학 (0) 2023.04.11 스택과 문제들 풀면서 얻은.. (0) 2023.04.05