Contents
- 문제 설명
[제한사항]
[입출력 예] - 알고리즘 분석
[나의 풀이]
[Most 1 의 풀이]
문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- ()() 또는 (())() 는 올바른 괄호입니다.
- )()( 또는 (()( 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예
s | return |
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
알고리즘 분석
- 나의 풀이
# 시간 초과 : 효율성 테스트 실패
def solution(s):
bracket = '()'
while bracket in s: # s에 올바른 괄호가 있을 경우
if s[0] == ')' or s[-1] == '(': # 처음과 마지막에 틀린 괄호가 있을 경우
return False
s = s.replace(bracket, '') # 올바른 괄호를 모두 지움
print(s)
if s:
return False
else:
return True
- 나의 풀이 2
def solution(s):
check = 0
left, right = '(', ')'
for str in s:
if check < 0: # check가 0보다 작을 경우
return False
if str is left: # str이 '('일 경우
check += 1
else: # ')'일 경우
check -= 1
return check == 0 # check가 0이면 True
'프로그래머스(Python) > Level2' 카테고리의 다른 글
[프로그래머스] '땅따먹기' 알고리즘 풀이 - Python (0) | 2020.10.22 |
---|---|
[프로그래머스] '다음 큰 숫자' 알고리즘 풀이 - Python (0) | 2020.10.21 |
[프로그래머스] '가장 큰 정사각형 찾기' 알고리즘 풀이 - Python (0) | 2020.10.20 |
[프로그래머스] '카펫' 알고리즘 풀이 - Python (0) | 2020.10.20 |
[프로그래머스] '위장' 알고리즘 풀이 - Python (0) | 2020.10.20 |