Coding Test/Programmers(프로그래머스)
[JAVA] 올바른 괄호
공구일
2025. 6. 20. 16:57
728x90
🔍자바 : 스택/큐 . 올바른 괄호
01. 코드 기획 단계
- 스택을 이용하여 괄호의 쌍을 이루는 것을 확인할 것입니다. -> (->(->)..이게 들어왔을 때는 이전에 들어온 괄호를 제거해주는 방식으로 진행합니다. => 들어온 값이 ')'인 경우에는 스택의 최상위값을 peek()해봐야합니다. 이때 stack이 비어있거나 '('가 최상위값이 아니면(사실상 이 코드에서 불가능한 값) return false를 해주어 런타임에러 발생을 막아줘야합니다.
02. 코드 실행 및 오류 잡기
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = false;
Stack<Character> stack = new Stack<>();
for(char c : s.toCharArray()){
if(c == '(') stack.push('(');
else if(c == ')') {
if(stack.empty() || stack.peek() != '(') return false;
stack.pop();
}
}
if(stack.empty()) answer = true;
return answer;
}
}
03. 정리
- Stack<E> 클래스는 Vector를 상속한 LIFO 자료구조로, push(item), pop(), peek(), empty() 등을 메서드로 가집니다.
- 문자열을 문자 배열처럼 다루기위해서는 .toCharArray()를 해줘야합니다. 만약에 문자열 중 문자에 접근할 때는 chatAt(인덱스)로 접근해주면 됩니다.
- 컴파일 에러와 런타임 에러:
• 컴파일 에러(Compile-time Error) : 코드를 컴파일(번역)할 때 발생하는 에러 -> JVM 실행 전에 에러 발생하는 것이기 때문에 코드 실행 자체가 안됩니다. 문법 오류나 타입 불일치 등이 있습니다.
• 런타임 에러(Runtime Error) : 코드의 컴파일은 잘 됐지만 실행 도중에 발생하는 예외/오류를 의미합니다. null 참조, 배열 범위 초과 등이 있으며, try-catch를 통해 예외처리 해줄 수 있습니다.
728x90