반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12909
<문제 풀이>
- stack을 이용하는 문제이다.
- 입력되는 문자를 반복문을 통해 하나씩 체크하면서 여는 괄호('(') 일 때는 stack에 누적하고 닫는 괄호(')') 일 때는 스택에 쌓인 것을 하나 제거한다.
- 중간에 stack에 없는데 닫는 괄호가 나오는 경우와 반복문이 끝나고 stack에 여는 괄호가 남아있는 경우는 올바르지 않은 괄호이다.
- stack을 굳이 배열로 하지않고 숫자 카운팅으로 진행해도 무방하다.
<Code>
def solution(s):
stack = []
for parenthesis in s:
if parenthesis == '(': # 여는 괄호인 경우 stack에 추가
stack.append(parenthesis)
else: # 닫는 괄호인 경우 stack이 비어있다면 올바르지 않는 괄호이기 때문에 False 리턴
if stack: # stack에 괄호가 있다면 올바른 괄호가 완성되므로 stack에서 마지막 괄호 제거
stack.pop()
else:
return False
# stack에 남아있는 괄호가 있다면 False, 존재하지 않는다면 올바른 괄호가 완성되므로 True 반환
return False if stack else True
class Solution {
boolean solution(String s) {
boolean answer = true;
int stack = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
stack++;
} else {
if (stack > 0) {
stack--;
} else {
return false;
}
}
}
return stack > 0 ? false : true;
}
}
※ 잘못된 점, 개선점 등이 있다면 언제든 댓글로 알려주시면 감사하겠습니다.
반응형
'Alogorithm > programmers' 카테고리의 다른 글
[programmers] Lv3 상담원 인원 - Python (0) | 2023.09.06 |
---|---|
[programmers] Lv3 거스름돈 - Python & Java (0) | 2023.05.09 |
[programmers] Lv2 2xn 타일링 - Python (0) | 2023.04.18 |
[programmers] Lv2 124 나라의 숫자 - Python (0) | 2023.04.18 |
[programmers] Lv2 두 원 사이의 정수 쌍 - Python (0) | 2023.04.17 |