https://school.programmers.co.kr/learn/courses/30/lessons/12909
문제이해
- '('과 ')'으로 구성된 문자열이 주어짐
- '()'이 한 쌍으로 존재해야 올바른 괄호
-> ex) '()', '(())()' 가능
- 문자열이 올바르면 true, 틀리면 false를 반환
해결방법
- Stack함수 사용
- '('이 들어온다면 push
- ')'이 들어온다면
- isEmpty를 이용 stack이 비어있는지 검사
- if 비어있다면 return false
- 아니라면 pop을 실행
stack을 이용 '('에는 push, ')'에는 pop을 사용, 올바른 괄호상태 = 비어있는 상태
isEmpty를 사용해 return값을 반환
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<Character> stack = new Stack<>();//char형 스택
//문자열 길이만큼 반복
for(int i = 0; i < s.length(); i++){
//'('일 때
if(s.charAt(i) == '('){
stack.push('('); // push
//')'일 때
} else if (s.charAt(i) == ')'){
//먼저 들어온 '('가 존재하는 지 확인
if(stack.isEmpty()){
return false;
}
//'('가 있다면 pop
stack.pop();
}
}
//stack이 비어있다면 올바른 괄호
return stack.isEmpty();
}
}
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 점프와 순간 이동 (0) | 2023.08.12 |
---|---|
[프로그래머스] 최솟값 만들기 (0) | 2023.08.11 |
[프로그래머스] 핸드폰 번호 가리기 (0) | 2023.05.25 |
[프로그래머스] 추억 점수 (0) | 2023.05.22 |
[programmers] 최소직사각형 (1) | 2023.05.17 |