TIL Day 18.

Jen Devver·2024년 3월 8일

내배캠 TIL

목록 보기
19/91

데이터 자료 구조

int, float, str, char 등과 같이 다양한 데이터 타입이 존재하는데, 이런 데이터 타입 외에도 내가 정의하는 데이터 타입이 class 이다!
class: user-defined data type

자료 구조는 컴퓨터 메모리를 효율적으로 사용하기 위해서 데이터를 저장하고 구성하는 방법
선형 자료 구조 linear data structure 에는 list, linked list, stack, queue 가 있고
비선형 자료 구조 non-linear data structure 에는 graph, tree 가 있다.
데이터에 맞는 자료 구조를 이용할 경우 데이터의 표현과 이해, 활용이 쉽다.

추상 데이터 타입 Abstract Data Type, ADT 는 데이터가 가지고 있는 구조, 연산을 표현하는 방법이다.
ADT = Structured Data + Operation

스택 stack

오늘 배운 건 스택 Stack
자료를 쌓아 올린 형태의 자료 구조이다.

특징으로는 가장 마지막에 들어간 데이터가 가장 처음에 나온다 LIFO Last in First out
가장 위에서만 데이터의 삽입과 삭제가 일어난다.

* 스택의 데이터 구조
top: 스택의 가장 위에 있는 위치를 저장하고 있는 데이터
size: 스택의 크기
items: 스택에 담길 데이터를 저장할 데이터 구조

* 스택의 데이터 연산
CreateStack: 스택을 생성. size 있어야 한다.
IsEmpty: 현재 비어있는지 확인. return True/False
IsFull: 현재 가득 찼는지 확인. return True/False
push: 스택에 새로운 데이터 삽입
pop: 스택의 가장 위에 있는 요소 제거, 데이터 반환
peek: 스택의 가장 위에 있는 요소 반환

stack의 가장 대표적인 문제는
괄호 문제
미로 찾기 문제

추후 풀어볼 예정

백트래킹 Backtracking

완전 탐색에서 일부 가지치기를 해서 시간을 단축시키는 방법.

한정 조건을 걸어서 해당 조건이 아닐 때 더 탐색하지 않는다.

기본 구조 (재귀 함수를 많이 이용함)

def recursive_func(n)
	if 정답:
    	출력 또는 저장
    else 정답 아님:
    	for 모든 자식 노드에 대해
        	if promising:
            	자식 노드로 이동
                recursive_func(n+1)
                부모 노드로 이동

알고리즘 공부 방법

❌ 단순히 문제를 보고 잘 안 되면 바로 답을 보면서 주석을 다는 것 ❌ ❌안 됨!!!❌

문제를 보고, 종이와 펜을 사용해서 문제를 잘 읽은 후 대략 어떻게 풀 지 정리.

구현 방법을 VSCode에서 시도. 당연히 막힘.

구현하는 데에 1시간이 넘어가면 답안 코드를 보고, 한 줄 씩 따라가면서 이해해본다. 이 때, 단계별로 출력값을 예측해보고 실제로 출력해보는 식으로 진행.

다시 구현해보고, 막히는 부분은 튜터님께 질문.
문제가 이렇다고 생각했고, 이렇게 구현하려고 했는데, 이렇게 될 줄 알았는데 이런 결과가 나왔다.
이렇게 구체적으로!

스쿼드 공부방

스택을 풀 때, 파이썬에서는 list 이용한다.

클래스로 구현하는 법 -> 셀프로 해볼 것

쇠막대기 문제
연산자 끼워넣기 문제

풀어보기!

Today I Thought

개념을 이해하는 것과 직접 푸는 것은 천지차이... 그래서 자전거 타기가 찰떡 비유가 맞다...
개념 이해는 됐는데 클래스로 스택을 구현하려다가 시간을 다 보냄. 클래스 쓴 지 오래돼서 또 어떻게 하는지 좀 헷갈렸다.

클래스 안 쓰는 걸로 우선 좀 풀어보고, 나중에 클래스 만들어봐야지.

드디어 주말..!! 주말 동안에 좀 여유롭게 문제 풀어봐야겠다. 그동안 너무 쫓기면서 풀었어..

profile
발전 중...

0개의 댓글