올바른 괄호
문제
코딩테스트 연습 - 올바른 괄호
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은
programmers.co.kr
괄호 '(' 과 ')' 만을 가진 문자열이 주어진다
올바르게 괄호가 열고 닫혔는지 확인하는 문제이다.
풀이
import java.util.Stack;
class Solution {
boolean solution(String s) {
boolean answer = true;
char[] chars = s.toCharArray();
Stack<Character> stack = new Stack<>();
for (char aChar : chars) {
if (aChar=='('){
stack.add(aChar);
}else{
if(stack.size()==0) return false;
stack.pop();
}
}
if (stack.size()!=0) return false;
return answer;
}
}
해설
풀이는 굉장히 간단하다
여는 괄호 '('가 나오면 stack에 넣고
닫는 괄호 ')'가 나오면 stack에서 pop한다
닫는 괄호 ) 가 나왔는데 stack에 저장된 여는 괄호가 없으면
여는 괄호가 부족하다는 뜻이니 false
과정을 모두 마쳤는데 stack이 비어있지 않으면
닫는 괄호가 부족하다는 뜻이니 false
모든 과정을 마치고 stack도 비어있다면 true다.
후기
보자말자 전에 책(누구나 자료구조와 알고리즘)에서 봤던 문제라는것을 기억했다.
알고리즘을 공부하면서 처음으로 재밌다고 느꼈던 문제였다
책에있는 예제가 오히려 더 복잡했기에 정말 빠르게 풀 수 있었다.
그렇게 나는 점점 알고리즘을 잘 알게될 줄 알았다
그러나 이후로 알고리즘이 재밌다고 느낀적이 없었다.
DFS와의 사투에서 모든 힘을 쏟아낸 나는
이어지는 골드문제들에서 거짓말처럼 참패를 당했다.

'개발자일지 > 코딩테스트' 카테고리의 다른 글
백준 1475 - 방 번호 (0) | 2022.05.24 |
---|---|
백준 - 1783 병든나이트 (0) | 2022.05.18 |
백준 1427번 - 소트인사이드 (0) | 2022.05.02 |
백준 - 2908 상수 (0) | 2022.04.27 |
백준 - 1110 더하기 싸이클 (0) | 2022.04.26 |