고양이와 코딩
[LeetCode] Valid Parentheses 본문
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
Example 4:
Input: s = "([])"
Output: true
Constraints:
- 1 <= s.length <= 104
- s consists of parentheses only '()[]{}'.
stack을 사용하여 문제를 푼다.
자세한건 주석으로~
#define MAX_SIZE 10000
bool isValid(char* s) {
char stack[MAX_SIZE + 1];
int top = -1; // stack의 최상단 인덱스
int length = strlen(s);
for(int i = 0; i < length; i++){
// 여는 괄호는 stack에 추가
if(s[i] == '(' || s[i] == '[' || s[i] == '{')
{
stack[++top] = s[i];
}
// 닫는 괄호 처리
else if(s[i] == ')' || s[i] == ']' || s[i] == '}')
{
if(top == -1)
{
// 닫는괄호일때 스택이 비어있으면 짝이 맞지 않으므로 false
return false;
}
char lastChar = stack[top--];
if((s[i] == ')' && lastChar != '(') ||
(s[i] == ']' && lastChar != '[') ||
(s[i] == '}' && lastChar != '{')) {
return false;
}
}
}
return (top == -1);
}
'C' 카테고리의 다른 글
[프로그래머스] 모음 제거/배열의 평균값 (0) | 2025.01.05 |
---|---|
[LeetCode] Merge Two Sorted Lists (0) | 2024.11.24 |
[LeetCode] Longest Common Prefix (3) | 2024.11.12 |
[LeetCode] Roman to Integer (1) | 2024.11.10 |
[LeetCode] Palindrom number (0) | 2024.11.10 |