https://school.programmers.co.kr/learn/courses/30/lessons/12909#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(s):
stack = []
for i in s:
if i == "(" :
stack.append(i)
else:
if not stack:
return False
stack.pop()
if stack:
return False
else:
return True
스택을 이용한 풀이방법이다.
처음에 replace, count를 이용해서 풀려고 시도했는데 이러면 시간복잡도가 매우 늘어난다.. 오빠의 도움을 받아 스택/큐 자료구조에 대해 공부하고 스택을 이용한 풀이방법을 공부하였다.
i가 여는 괄호( "(" )이면 리스트(stack)에 계속 쌓아준다. 그러다가 닫는 괄호( ")" )를 만나면 pop()을 해줘 리스트 안의 마지막 여는 괄호를 없앤다. ( pop() 괄호 안에 아무것도 넣지 않으면 제일 마지막 요소를 pop해준다.)
s가 올바른 괄호일 경우 stack에는 아무것도 남지 않을 것이다.
stack이 빈 배열인 상태인데 닫는 괄호를 만날 경우 올바른 괄호가 아니기 때문에 False를 반환한다.
내일 더 자세히 공부한 후 블로그에 정리해야겠다.
| [파이썬/python] 백준 10826번 : 피보나치 수 4 (🥈5) (feat.동적계획법/다이나믹프로그래밍) (0) | 2023.02.12 |
|---|---|
| [파이썬/python] 프로그래머스 : 최솟값 만들기 (Lv.2) (0) | 2023.01.19 |
| [파이썬/python] 프로그래머스 : JadenCase 만들기 (Lv.2) (1) | 2023.01.19 |
| [파이썬/python] 프로그래머스 : 최댓값과 최솟값 (Lv.2) (0) | 2023.01.18 |
| [파이썬/python] 프로그래머스 : 숫자 짝꿍 (Lv.1) (0) | 2023.01.17 |