Hippo's data
[프로그래머스] 올바른 괄호 Python 풀이 본문
728x90
프로그래머스(Programmers) 올바른 괄호 문제
난이도 : Level 2
<문제 링크>
https://school.programmers.co.kr/learn/courses/30/lessons/12909
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
레벨2의 제법 난이도 있는 문제지만
2가지 방법으로 쉽게 해결할 수 있다
1. 스택구조 활용
2. 등장횟수 기록
1. 스택구조 활용
먼저 스택(stack)구조를 이용하여 문제를 수월하게 해결할 수 있다
( 기호가 들어온 후 ) 기호가 들어오면 ( 기호를 지우는 과정을 반복한 후
스택에 남은 기호가 없으면 올바르게 매칭 된것이므로 True
남은 기호가 있으면 제대로 매칭이 안되므로 False 출력
def solution(s):
# 스택 생성
stack = []
answer = True
# ( 들어오고 )이 등장하면 (기호를 삭제하며 최종 스택에 남은 기호 개수로 판단
for i in s:
if i == '(':
stack.append(i)
elif i == ')':
# )차례인데 기존 스택이 비어있디면 false출력후 반복문 멈춤
if len(stack) == 0 :
answer = False
break
stack.pop()
# 최종적으로 스택에 기호가 남아있다면 false
if len(stack) >0:
answer= False
return answer
2. 등장횟수 기록
(, ) 두 기호의 등장횟수를 기록해서 문제를 해결할 수 있다
괄호가 올바르게 쓰이지 않은 경우는 2가지가 있다
1. ( 가 나오지 않았는데 )나온 경우
2. (, ) 두 기호의 개수가 다른 경우
-> 두 조건을 고려하여 문제를 해결하면 된다!!
# 스택 미사용 해결 / 기록해서 해결하기
def solution(s):
answer = True
# 개수 기록할 변수 생성
dap = 0
# '('는 +1 ')'는 -1을 해주며 반복
for i in s:
if i == '(':
dap +=1
else:
dap -=1
# ( 가 나오지 않았는데 )나온 경우 음수이므로 이 경우 False 반환
if dap <0 :
answer = False
# (, ) 개수가 다른 경우 False 반환
if dap != 0:
answer = False
return answer
728x90
'Algorithm > 프로그래머스(programmers)' 카테고리의 다른 글
[프로그래머스] 완주하지 못한 선수 Python 풀이 (0) | 2024.01.25 |
---|---|
[프로그래머스] 크레인 인형뽑기 게임 Python 풀이 (0) | 2024.01.24 |
[프로그래머스] K번째수 Python 풀이 (0) | 2024.01.23 |
[프로그래머스] 컨트롤 제트 Python 풀이 (0) | 2024.01.23 |
[프로그래머스] 큰 수 만들기 Python 풀이 (0) | 2024.01.21 |