문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예
import java.util.*;
class Solution {
boolean solution(String s) {
Stack<Character> stack = new Stack<>();
for(int i = 0; i < s.length(); i++){
if(s.charAt(i)=='('){
stack.push('(');
}else{
if(stack.isEmpty()){
return false;
}
stack.pop();
}
}
return stack.isEmpty();
}
}
이번 문제를 풀면서 처음으로 stack을 사용해봤다.
이전에 List에 대해 배우면서 stack이라는 것이 있다는 것을 알고는 있었지만 알아볼 생각을 크게 하지 않았는데,
이번 문제의 경우 stack을 활용해서 풀어보고 싶어서 검색해서 알아본 후 풀어보았다.
stack에 대해 (GPT가) 정리한 내용을 함께 첨부해둔다.
스택 생성: 자바에서 스택을 구현하려면 주로 배열이나 연결 리스트를 사용합니다. 자바에서는 java.util.Stack
클래스를 제공하지만, 일반적으로 java.util.LinkedList 클래스를 사용하여 스택을 구현하는 것이 더 일반적입니다.
'Java > 프로그래머스' 카테고리의 다른 글
[프로그래머스/JAVA] 구명보트 (1) | 2023.11.05 |
---|---|
[프로그래머스/JAVA] 숫자의 표현 (0) | 2023.10.16 |
[프로그래머스/JAVA] 예산 (2) | 2023.10.04 |
[프로그래머스/JAVA] 음양 더하기 (0) | 2023.09.22 |
[프로그래머스/JAVA] 숫자 문자열과 영단어 (0) | 2023.09.20 |
댓글