
프로그래머스 고득점 Kit - 올바른 괄호Coding/PS2025. 1. 28. 09:47
Table of Contents
반응형

Problem
https://school.programmers.co.kr/learn/courses/30/parts/12081
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 괄호가 바르게 짝지어졌다는 것은 '(' 로 열렸으면 반드시 짝지어서 ')' 로 닫혀야 한다
- '(' , ')' 로만 이뤄진 문자열 s가 주어졌을 때, 올바르게 짝지어진 문자열이면 true를, 그렇지 않으면 false를 반환해라.
Input / Output Example
s | answer |
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
Solution
파이썬의 리스트를 이용해 Stack 처럼 이용하면 되는 문제이다.
여는 괄호가 들어오면 일단 스택에 넣고 본다.
닫는 괄호가 들어온다면 직전에 스택에 넣은 값을 찾아봐야 한다.
여는 괄호가 직전에 들어왔다면 옳은 문자열이므로 스택에서 pop을 해준다.
직전에 들어온 괄호가 닫는 괄호면 잘못된 문자열이므로 false를 반환한다.
문자열을 한번 순회한 다음, 스택에 남아있는 값이 있다면 옳은 문자열이 아니므로 false를 반환하면 된다.
만약 스택에 문자열이 비어 있다면 true를 반환하면 된다.
Code
def solution(s):
answer = True
stack=[]
for x in s:
if x == "(": # 여는 괄호 -> 일단 스택에 넣기
stack.append(x)
else: # 닫는 괄호라면
if len(stack) > 0 and stack[-1] == "(": # 스택에 직전에 여는 괄호를 넣었다면
stack.pop(-1)
else:
return False
if len(stack) != 0:
return False
return True
반응형
'Coding > PS' 카테고리의 다른 글
프로그래머스 고득점 Kit - 디스크 컨트롤러 (0) | 2025.02.03 |
---|---|
프로그래머스 고득점 Kit - 이중 우선순위 큐 (0) | 2025.01.29 |
프로그래머스 고득점 Kit - 더 맵게 (0) | 2025.01.28 |
프로그래머스 고득점 Kit - 다리를 지나는 트럭 (0) | 2025.01.28 |
프로그래머스 고득점 Kit - 프로세스 Python (1) | 2025.01.21 |
@현주씌 :: 현주.로그
소프트웨어학과 현주씌의 일상을 담는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!