728x90
반응형
문제
스택/큐 카테고리에 있길래 스택을 사용해야 하는 문제라고 생각했어요.
근데 제가 자료구조를 사용해서 알고리즘을 풀어본 적이 없어서 구글링과 공식문서를 참고해서 풀었습니다.
먼저 스택에 대해 간단한 코드 설명부터 보시죠!
Stack(스택)
import java.util.Stack; // import
// int형 스택 선언
Stack<Integer> stack = new Stack<>();
// 스택 값 추가
stack.push(1);
stack.push(2);
stack.push(3);
// 스택 값 삭제
stack.pop(); // 3삭제
stack.clear(); // 전체 값 삭제
stack.push(1);
stack.push(2);
stack.push(3);
// 스택 값 출력
stack.peek(); // 3 출력
// 스택 크기 출력
stack.size(); // 3
// 스택이 비어있는지 확인
stack.empty(); // false
// 스택에 해당 값이 있는지 확인
stack.contains(1); // true
정답 풀이
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
//
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;
else
stack.pop();
}
}
answer = (stack.isEmpty()) ? true : false;
//
return answer;
}
}
- (가 오면 스택에 넣어준다
- 그렇지 않은데 스택이 비어있다 즉, 처음에 )가 나온 경우 false를 반환한다
- 그렇지 않을 경우 ( ㅡ> ) 순서로 나왔다는 것이므로 짝이 맞으니 스택을 비워준다
- 스택이 비어있을 경우 즉, 짝이 맞을 경우 true를 반환한다
728x90
반응형
'Computer Science (CS) > 알고리즘' 카테고리의 다른 글
[백준/Java] 2675번 문자열 반복 (0) | 2023.05.02 |
---|---|
[프로그래머스/Java] 이진 변환 반복하기 (0) | 2023.04.28 |
[프로그래머스/Java] 최솟값 만들기 (0) | 2023.04.28 |
[프로그래머스/Java] JadenCase 문자열 만들기 (0) | 2023.04.28 |
[백준/Java] 10809번 알파벳 찾기 (0) | 2023.04.16 |