728x90
첫 시도! >> 5,11,17실패, 효율성2 실퍠
문제점 : 첫 시작이 ‘)’일때 false 로 잘생각해냈으나, 마지막끝이 ‘(’일때도 false임을 생각하지 못함.
마지막에 ( ) 가 됬을 때, stack에서 pop을 하고나서, 앞쪽에 있던 괄호를 생각을 하지 않고, 뒤에 쌓인것만 비교하게됨.
첫 시도_문제의코드 ㅇ_ㅇ
def solution(s):
answer = True
stack = []
for i in range(len(s)):
if(s[0] == ')' or s[-1] == '(') :
answer = False
break
for i in range(len(stack)) :
if stack[i-1:] == ['(',')'] :
stack.pop()
stack.pop()
if len(stack) != 0 :
answer = False
return answer
색다르게 생각해보자! 해서
‘(’괄호의 개수가 ‘)’의 개수와 같으면 올바른 괄호가 아닌가?
응 아니야 잘못생각했음.
5번, 11번 실패. 실패케이스가 있나보다.. 역시너무쉽게생각했지
두번째 시도_ 문제의 코드 ㅇ_ㅇ
def solution(s):
answer = True
x = 0
y = 0
for i in range(len(s)) :
if(s[0] == ')' or s[-1] == '(') :
answer = False
break
if(s[i] == '(') :
x += 1
else :
y += 1
if x != y :
answer = False
return answer
과감하게 윗 코드를 버리고 다시 새로짰음!
그치만 또 런타임오류 5,11번…
뭐가문젤까… 고민……..몇시간째….
세번째 시도 _ 문제의 코드 ㅇ_ㅇ
def solution(s):
answer = True
stack = []
for i in range(len(s)) :
if(s[0] == ')' or s[-1] == '(') :
answer = False
break
stack.append(s[i])
if s[i] == ')' :
stack.pop()
stack.pop()
if len(stack) != 0 :
answer = False
return answer
문제해결!!!
알고보니, (()))))))인 경우,
()를 pop해주고,
)))만 남았을 때가 문제였던 것.!
마지막 시도 _ 해결 코드!!!!!
def solution(s):
answer = True
stack = []
for i in range(len(s)) :
if(s[0] == ')' or s[-1] == '(') :
answer = False
break
stack.append(s[i])
if s[i] == ')' :
if len(stack) == 1 :
answer = False
break
else :
stack.pop()
stack.pop()
if len(stack) != 0 :
answer = False
return answer
'알고리즘 (JAVA) > 프로그래머스 알고리즘' 카테고리의 다른 글
[코테준비 - python] 문자열 내 마음대로 정렬하기 level1 - 개발자 배찌 (0) | 2022.12.15 |
---|---|
[코테준비 - python] 숫자의 표현 level2 - 개발자배찌 (1) | 2022.12.15 |
[코테준비 - python] 햄버거만들기 level1 - 개발자 배찌 (0) | 2022.12.14 |
[코테준비 - python] 문자열 다루기 기본 level1 - 개발자 배찌 (1) | 2022.12.07 |
[코테준비 - python] 숫자 문자열과 영단어 lever1 - 개발자 배찌 (0) | 2022.12.07 |