728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=java
문제 풀이
스택을 활용한 기본 문제
Stack을 사용하지 않고 ArrayDeque을 사용한 이유
Stack의 단점
- 모든 메소드에 synchronized가 있기 때문에 단일 스레스 환경에서는 성능이 떨어집니다.
- Vector 클래스를 상속받았기 때문에 LIFO 구조를 유지하는 것이 아니라 중간에서 데이터를 삭제하고 삽입하는 것이 가능합니다.
- Stack 클래스를 만들 때 초기 용량을 설정할 수 없습니다.
String을 deque에 저장을 시킨다. 여기서 String을 문자열배열로 바꾸기 위해 toCharArray를 사용해야한다. 그 다음 for문으로 돌면서 ( 인 경우 stack에 넣어주고 )인 경우는 deque가 비었거나 맨 위에 있는 원소가 ) 인 경우 false를 반환해준다 그러면 마지막에 ((( 처럼 쌓여있는 경우가 있을텐데 그럴 경우를 대비하여 return 값에 stack.isEmpty() 을 넣어주면 정답 값을 반환해준다.
import java.util.*;
class Solution {
boolean solution(String s) {
ArrayDeque<Character> stack = new ArrayDeque<>();
char []arr = s.toCharArray();
for(char a : arr){
if(a == '('){
stack.push(a);
}else if(a == ')'){
if(stack.isEmpty() || stack.pop() == a){
return false;
}
}
}
return stack.isEmpty();
}
}
완성
ref
https://devlog-wjdrbs96.tistory.com/245
728x90
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스] 짝지어 제거하기 - java (0) | 2024.08.08 |
---|---|
[프로그래머스] 괄호 회전하기 - java (0) | 2024.08.08 |
[프로그래머스] 모의고사 - java (0) | 2024.08.03 |
[프로그래머스] 두 개 뽑아서 더하기 - java (0) | 2024.07.25 |
[2020 카카오 인턴십] 키패드 누르기- java (2) | 2024.07.24 |