Problem : https://programmers.co.kr/learn/courses/30/lessons/12909
코딩테스트 연습 - 올바른 괄호
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 ()() 또는 (())() 는 올바른 괄호입니다. )()( 또는 (()( 는 올바르지 않은 괄호
programmers.co.kr
Approach
괄호체크는 간단하게 Stack을 사용하여 확인할 수 있다.
'('을 만나면 stack에 push를 하고, ')'를 만났을 땐 stack이 비어있거나 stack의 top이 '('이 아니면 false를 반환한다.
맞다면 stack에서 pop을 한다.
또, 문자열의 끝까지 위 과정을 반복해서 끝낸 후, stack이 차있다면 false를 반환한다.
위의 두 경우는 올바르지 않은 괄호이고, 위의 두 경우가 아닌경우 올바른 괄호이므로 true를 반환한다.
Code
import java.util.Stack;
public class CorrectBracket {
public static void main(String[] args) {
String s = "(()(";
CorrectBracket cb = new CorrectBracket();
System.out.println(cb.solution(s));
}
public boolean solution(String s) {
var stack = new Stack<Character>();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
stack.push('(');
} else {
if (stack.isEmpty()) {
return false;
} else {
stack.pop();
}
}
}
if (stack.isEmpty()) {
return true;
} else {
return false;
}
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[java] 프로그래머스 (땅따먹기) Level 2 (0) | 2021.01.13 |
---|---|
[java] 프로그래머스 (다음 큰 숫자) Level 2 (0) | 2021.01.13 |
[java] 프로그래머스 (튜플) Level 2 (0) | 2021.01.13 |
[java] 프로그래머스 (단체사진 찍기) Level 2 (0) | 2021.01.13 |
[java] 프로그래머스 (가장 큰 정사각형 찾기) Level 2 (0) | 2021.01.09 |