스텍/큐 올바른 괄호

김다은·2023년 11월 10일
0

코딩테스트

목록 보기
4/8

문제&입출력 예

문제 해결 방법

  • "("을 넣을 리스트를 만들어준다
  • ")"가 들어오면 한쌍이 완성되기 때문에 "("리스트에서 하나를 뺀다
  • 이 과정을 반복하면서 이 외에 일어날 예외들을 처리해준다
  • 스택 자료구조를 활용하여 문제 해결 방법을 생각한다
def solution(s):
    answer = True
    stk = []
    for ch in s:
        if ch == "(":
            stk.append(ch)
        else:
            if stk:
                stk.pop()
            else:
                return False
    if stk:
        return False
    return True
                

스택 정리

  • 스택을 어떻게 설명할 것인가
    데이터를 일시적으로 저장하는 자료구조이며 후입선출(Last In, First Out) 원칙에 따라 동작
  • 스택은 주로 어떤 상황에 쓰이는가
    주로 함수 호출 시의 임시 데이터 저장, 수식의 괄호 검사, 역순 문자열 만들기, 미로 찾기 등 다양한 알고리즘에서 활용 가능
  • 큐와 다른점은? 표로 정리해줘
특성스택 (Stack)큐 (Queue)
동작 원리후입선출(LIFO)선입선출(FIFO)
데이터 삽입과 제거맨 위에서 삽입 및 제거뒤쪽에서 삽입, 앞쪽에서 제거
활용함수 호출 시의 임시 데이터 저장, 수식의 괄호 검사, 뒤로가기 기능 등작업 대기열, 프린터 대기열, 너비 우선 탐색(BFS) 등
주요 연산Push(데이터 추가), Pop(데이터 제거), Peek(데이터 조회), IsEmpty(비어있는지 확인), Size(크기 확인) 등Enqueue(데이터 추가), Dequeue(데이터 제거), Peek(데이터 조회), IsEmpty(비어있는지 확인), Size(크기 확인) 등
구현배열 또는 연결 리스트배열 또는 연결 리스트, 덱(Double-Ended Queue)

느낀점

스택으로 쉽게 문제를 해결할 수 있었다. 그러나 문제 해결 방식은 간단하지만, 이 방법을 생각해내는 과정이 어려웠다. 많은 문제를 풀어봐야 할 것 같다. 컴퓨팅사고력?을 더 키우기 위해 다양한 노력을 해봐야 할 것 같다.

profile
이제는 더이상 물러날 곳이 없다

0개의 댓글