# 문제1.
소괄호는 짝을 맞춘 열린 괄호"(" 와 ")"로 구성한다.
# 열린 괄호나 닫힌 괄호가 마구 뒤섞인 문자열이 있다.
# 이때 소괄호가 정상적으로 열고 닫혀 있는지를 판별하는 함수를 작성하시오.
#소괄호가 정상적으로 열고 닫혀있다면 True, 그렇지 않다면 False를 반환.
# 제약조건:
#1.열린 괄호는 자신과 가장 가까운 닫힌 괄호를 만나면 상쇄된다.
# 2.반드시 열린 괄호가 먼저 와야하고, 열린 괄호와 닫힌 괄호 사이에
# 아무것도 없어야한다.
풀이과정
def sol(a):
stack = [] # 스택 초기화
for i in a:
if i == '(': # 여는 괄호가 나오면 스택에 추가
stack.append('(')
else:
if stack == []: # 스택이 비어 있으면 짝이 맞는 여는 괄호가 없다는 뜻
return False
else:
stack.pop() # 짝을 맞춘 후 여는 괄호를 제거
# 마지막에 스택에 남아있는 여는 괄호가 없으면 True, 있으면 False
if stack != []:
return False
return True
알파벳 소문자로 구성 된 문자열에서 같은 알파벳이 2개 붙어있는 짝을 찾는다.
짝을 찾은 다음에는 그 둘을 제거한 뒤 앞뒤로 문자열을 이어 붙인다.
이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료된다.
문자열 S가 주어질때 짝지어 제거하기를 성공적으로 수행할 수 있는지반환하는 함수를 완성하시오.
성공적으로 수행하면 1을 반환하고 아니면 0 을 반환한다.
예를들어 S가 baabaa라고 가정하면baabaa -> bbaa -> aa -> 짝이 맞다 (True)cdcd => 0
풀이과정
def solution(s):
stack=[]
for c in s:
if stack == []:
stack.append(c)
elif stack[-1] == c:
stack.pop()
else:
stack.append(c)
if stack==[]:
return 1
else:
return 0
↑ 내가 푼 솔루션
'코테준비' 카테고리의 다른 글
코딩테스트 :: 자료형_stack (0) | 2024.11.23 |
---|---|
[코딩테스트] 자료구조 (0) | 2024.11.17 |
파이썬으로 코딩 테스트 준비하기! (0) | 2024.11.16 |