View
문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예sanswer
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
입출력 예 #1,2,3,4
문제의 예시와 같습니다.
나의 풀이1
from collections import deque
def solution(s):
while s:
if s and s[0] ==")" or s[-1] =="(":
return False
q = deque(s.split('()'))
s = ''.join(q)
return True
나의 풀이2
스택을 제대로 활용한 방법..!!
if, elif, else를 사용하여 if 조건이 걸린다면, 아래 조건문은 건너 뛴다는 것에 유의
from collections import deque
def solution(s):
q = deque()
for i, v in enumerate(s):
if v == "(": # 첫 시작은 무조건 '('
q.append(v)
elif q and v == ")":
q.pop()
else: # 첫 시작은 무조건 '(' 여아 한다. ')' 인경우는 False
return False
return True if not q else False
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
programmers) 같은 숫자는 싫어 (1) | 2022.11.23 |
---|---|
programmers) 폰켓몬 (0) | 2022.11.23 |
programmers) 완주하지 못한 선수 (1) | 2022.11.22 |
programmers) 최빈값 구하기 (0) | 2022.11.20 |
programmers) 다항식 더하기 (0) | 2022.11.20 |
reply