본문 바로가기
코테준비

코딩테스트 :: 자료형_stack 문제

by 바다의 공간 2024. 11. 24.
# 문제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