문제
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예
s | answer |
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
코드
import java.util.*;
class Solution {
boolean solution(String s) {
char[] arr = s.toCharArray();
//빠른 탈출
if(arr[0] == ')' || arr[arr.length-1] == '(') return false;
Deque<Character> stack = new ArrayDeque<>();
for(char c : arr){
if(c == '('){
stack.add(c);
}else{
while(stack.size()>0){
char temp = stack.poll();
// 짝을 찾으면 나간다
if(temp == '(') break;
}
}
}
return stack.size()==0?true:false;
}
}
풀이
문자열을 char형 배열로 바꿉니다!
무조건
맨 앞에는 ( 가,
맨 뒤에는 ) 가 와야 True가 됩니다.
아무튼 넘어가서
char 배열을 하나씩 보면서
( 이면 스택에 담고
) 를 만나면 ( 를 만날때까지 poll 해줍니다.
그렇게 다 돌렸는데 stack의 사이즈가 0이면 true이고
1개라도 남아 있으면 false 입니다.
728x90
'프로그래머스 > Lv.2' 카테고리의 다른 글
코딩테스트 연습 > 프로세스 - JAVA (0) | 2024.01.02 |
---|---|
코딩테스트 연습 > [1차] 캐시 - JAVA (1) | 2023.12.31 |
코딩테스트 연습 > 귤 고르기 > - JAVA (0) | 2023.12.20 |
코딩테스트 연습 > N개의 최소공배수 - JAVA (1) | 2023.12.18 |
코딩테스트 연습 > 피보나치 수 - JAVA (2) | 2023.12.07 |