728x90
반응형
[문제]
Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
- Open brackets must be closed by the same type of brackets.
- Open brackets must be closed in the correct order.
- Every close bracket has a corresponding open bracket of the same type.
Example 1:
Input: s = "()"
Output: true
Example 2:
Input: s = "()[]{}"
Output: true
Example 3:
Input: s = "(]"
Output: false
Constraints:
- 1 <= s.length <= 104
- s consists of parentheses only '()[]{}'.
문제 파악
-괄호의 쌍을 맞추는 <올바른 괄호> 문제 응용
https://leetcode.com/problems/valid-parentheses/
-제어문을 통해 여는 괄호와 닫는 괄호를 매치
접근 방법
<aside> 💡 Deque를 이용한 스택 자료구조를 통해 해결
</aside>
코드 구현
import java.util.*;
class Solution {
public boolean isValid(String s) {
Deque<Character> stack = new ArrayDeque<>();
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='(' ||s.charAt(i)=='[' ||s.charAt(i)=='{') stack.push(s.charAt(i));
else if(!stack.isEmpty()){
if(s.charAt(i)==')' & stack.peek() == '(') stack.pop();
else if(s.charAt(i)==']' & stack.peek() == '[') stack.pop();
else if(s.charAt(i)=='}' & stack.peek() == '{') stack.pop();
}else return false;
}
return stack.isEmpty();
}
}
배우게 된 점
-String 문자열을 .charAt() 함수로 접근하는 방식을 배웠다.
(기존엔 charArray() 함수로 배열에 할당하여 사용)
-FIFO 구조 활용법
반응형
'alorithm > programmers' 카테고리의 다른 글
[JAVA/프로그래머스] 주식가격 (0) | 2024.07.11 |
---|---|
[JAVA/프로그래머스] 두 큐 합 같게 만들기 (0) | 2024.07.11 |
[JAVA/프로그래머스] [1차] 캐시 (0) | 2024.07.11 |
[JAVA/프로그래머스] 기능개발 (0) | 2024.07.11 |
[Leetcode] 739. Daily Temperatures (0) | 2024.07.11 |