[programmers] 프로그래머스 Level2 올바른 괄호
(파이썬 Python)
* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제
1) 문제
2) 풀이 과정
1. '('가 들어오면 stack의 개수를 증가
2. 만약 ')'가 있는 상황에서
ㄴ 위에서 저장한 '('를 꺼내면서 개수를 빼준다.
ㄴ 문자 ')'가 '('보다 많게 된다면, 이것 역시 false
3. 1,2를 모두 순회하고 나서, stack_count 가 0이 아니라면?
= '('과 ')'의 균형이 안맞는 경우 이니까 이 때도 false
< < 사고 과정 > >
쌍을 이루는 문제다. 스택개념을 써서 push() 개념과 pop()개념을 이용하자.
Why? 쌍을 이룰 때, 나중에 들어 온게 먼저 나가야지만 순서쌍을 이룰 수 있을거라 판단.
(빨 - > 파 - > 검) 순서의 예
가장 기본이 되는 순서 : (가 먼저 들어오고 )으로 쌍을 맞춘다.
Why 스택을 사용?
)가 들어오면 순서쌍에 맞게 (를 빼주기 위해
3) 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
def solution(s):
answer = True
stack_count = 0
for c in s:
if(c == '('):
stack_count += 1
elif(c == ')'):
stack_count -= 1
if(stack_count < 0) :
answer = False
if(stack_count != 0):
answer = False
return answer
|
cs |
4) 정리 노트
X
'*Algorithm > Programmers_Level2' 카테고리의 다른 글
[programmers] 프로그래머스 Level2 다음 큰 숫자(파이썬 Python) (0) | 2020.11.18 |
---|---|
[programmers] 프로그래머스 Level2 피보나치 수(파이썬 Python) (0) | 2020.11.17 |
[programmers] 프로그래머스 Level2 124 나라의 숫자(파이썬 Python) (0) | 2020.11.12 |
[programmers] 프로그래머스 Level2 N개의 최소공배수(파이썬 Python) (0) | 2020.11.09 |
[programmers] 프로그래머스 Level2 최솟값 만들기(파이썬 Python) (0) | 2020.11.09 |
댓글