jun-wiki

View My GitHub Profile

Posts (Latest 10 updated) :
Read all

2주차의 첫날이다.

키워드 단어 위주로 공부했다.

이미 한번 다룬 개념들이기에

개꿀이다

원래 고기도 먹어본 놈이 잘 먹는다고

한번 해본 놈이 더 잘하는 법이다

교과서 위주로 공부했어요!!! 라는 말을 하며 기만하고 싶다는 생각도 어렴풋이 들고 말이다.

준 교재에서 읽은 내용 그대로 과제랑 키워드 단어로 주는 거 보니

더더욱 그러하고 말이다


물론 난 GPT랑 인터넷을 적극 수입했기에
교과서 위주로 안했다 ㅇㅇ;;

좋은 문화 받아들여야

오늘 공부한 키워드는…



스택, 큐!

간단한 정의는 하이퍼링크로 달아놨으니 확인하면 된다

스택을 내장함수가 아닌 직접 구현해보며
(교재 따라하기)

스택에 관해 알아보자

클래스를 사용할거니 모르겠다면 보고 오자

class FixedStack:
    """고정 길이 스택 클래스"""

    class Empty(Exception):
    """비어 있는 FixedStack에 pop 또는 peek를 호출할 때 내보내는 예외 처리"""
        pass

    class Full(Exception):
    """가득 찬 FixedStack에 push를 호출할 때 내보내는 예외 처리"""

        pass
    
    def __init__(self, capacity):
        self.stk - [None] * capacity   # 스택 본체
        sel.capacity = capacity        # 스택의 크기
        self.ptr = 0                   # 스택 포인터

    def __len(self):
    """스택에 쌓여있는 데이터 개수를 반환"""
        return self.ptr

    def is_empty(self):
        """스택이 비어 있는가?"""
        return self.ptr <= 0
        
    def is_full(self):
        """스택은 가득 찼는가?"""
        return self.ptr >= self.capacity

일단 기본 예외처리와

스택의 데이터 갯수

비어있는지 가득 차있는지 확인하는 기능이 생겼다 ___


아직 기능 추가 할게 많다…

# 아까 작성하던 코드 아래에 이으면 된다

    def push(self, value: Any) -> None:
        """스택에 value를 푸시"""
        if self.is_full():              # 스택이 가득 참
            raise FixedStack.Full
        self.stk[self.ptr] = value
        self.ptr += 1

    def pop(self) -> Any:
        """스택에서 데이터를 팝(꼭대기 데이터를 꺼냄)"""
        if self.is_empty():             # 스택이 비어 있음
             raise FixedStack.Empty
        self.ptr -= 1
        return self.stk[self.ptr]

    def peek(self) -> Any:
        """스택에서 데이터를 피크(꼭대기 데이터를 들여다 봄)"""
        if self.is_empty():             # 스택이 비어 있음
            raise FixedStack.Empty
        return self.stk[self.ptr - 1]

    def clear(self) -> None:
        """스택을 비움(모든 데이터를 삭제)"""
        self.ptr = 0

데이터 푸시용 함수와

데이터 팝 함수

데이터 들여다보는 함수

모든 데이터 삭제 함수를 얻었다





# 마지막 마무리로 비유하자면 하반신이다.

    def find(self, value: Any) -> Any:
        """스택에서 value를 찾아 첨자(없으면 -1)를 반환"""
        for i in range(self.ptr - 1, -1, -1):  # 꼭대기 쪽부터 선형 검색
            if self.stk[i] == value:
                return i  # 검색 성공
        return -1         # 검색 실패

    def count(self, value: Any) -> bool:
        """스택에 포함되어있는 value의 개수를 반환"""
        c = 0
        for i in range(self.ptr):  # 바닥 쪽부터 선형 검색
            if self.stk[i] == value:
                c += 1             # 들어 있음
        return c

    def __contains__(self, value: Any) -> bool:
        """스택에 value가 있는가?"""
        return self.count(value)

    def dump(self) -> None:
        """덤프(스택 안의 모든 데이터를 바닥부터 꼭대기 순으로 출력)"""
        if self.is_empty():  # 스택이 비어 있음
            print('스택이 비어 있습니다.')
        else:
            print(self.stk[:self.ptr])

선형검색을 통한 검색 기능

데이터 갯수 세는 기능

데이터 포함 여부도 확인 가능이다