나의 풀이
def solution(s):
stack = []
for i in s :
if i == '(' :
stack.append('(')
else :
if stack :
stack.pop()
else :
return False
return stack==[]
( 를 stack 에 넣고,
)가 나오면 stack에 있는 ( 를 상쇄시킬 것이다.
만약 stack 에 아무것도 없다면?
(가 나오지 않았는데 ) 가 나온 것이므로 false 를 리턴해야 한다.
한편, 반복문을 모두 돈 후에도 stack 이 비어있지 않다면
) 의 개수가 ( 보다 더 많음을 의미하므로 false 를 리턴한다.
다른 풀이
아주 감탄한 풀이...
심지어 내가 푼 방법보다 훨씬 쉽다.
오히려 단순하게 생각하는 것도 연습이 필요한 것 같다.
def is_pair(s):
# 함수를 완성하세요
x = 0
for w in s:
if x < 0:
break
x = x+1 if w=="(" else x-1 if w==")" else x
return x==0
( 의 개수를 x로 표현한다.
즉, ( 가 나오면 x 를 1씩 증가시킨다.
)가 나온다면 (와 짝을 맞추기 위해 ( 를 상쇄할 수 있다.
즉, x의 값을 1 감소시킨다.
만약 ) 가 나왔는데 x가 0보다 작다면? ( 가 나오지 않았는데 ) 가 나온 것이다.
마지막에는 x가 0이라면 true 를, 음수 혹은 양수가 나온 경우에는 false 를 리턴하도록 한다.
★ 파이썬 중첩 삼항 연산자
새로 알게 된 문법이다.
참1 if 조건1 else [ 참2 if 조건2 else 거짓2]
만약 조건1이 참이라면? -> 참1
만약 조건1가 거짓이라면? -> [ 참2 if 조건2 else 거짓2] 실행
- 조건2가 참이라면? -> 참2
- 조건2가 거짓이라면? 거짓2
'알고리즘 > 스택,큐' 카테고리의 다른 글
[프로그래머스] 주식가격 - 파이썬(python) (0) | 2022.09.03 |
---|---|
[프로그래머스] 다리를 지나는 트럭 - 파이썬(python) (1) | 2022.09.03 |
[프로그래머스] 프린터 - 파이썬(python) (1) | 2022.09.02 |
[프로그래머스] 같은 숫자는 싫어 - 파이썬(python) (0) | 2022.09.02 |
[프로그래머스] 기능개발 - 파이썬(python) (0) | 2022.05.07 |
댓글