
패스트캠퍼스 Python 코딩테스트 강의 [개발자 취업 합격 패스 with 코딩테스트, 기술면접]를 수강하며 정리한 글입니다🤓
Content
1주차 수강한 내용을 정리하기에 앞서, 이 강의를 수강하기로 결정한 이유를 말해보자면
6개의 챕터의 다양한 내용으로 구성되어 있기 때문이었다.
Chapter 1. 자료구조 이론 - 10h
Chapter 2. 알고리즘 이론 - 12.5h
Chapter 3. 코딩테스트 문제 풀이 - 21h
Chapter 4. 실전 코딩테스트 문제 풀이 - 9h
Chapter 5. 기술 면접 & CS 지식 - 19h
Chapter 6. 네카라쿠배 합격자 노하우 - 11h
대략 총 83시간이다.. 하루에 3시간씩 성실히 듣는다면 1달이 걸리겠어요.,
강의 내용도 풍부하길 기대합니다🥺
1주차에는 Chapter 1. 자료구조 이론을 수강했다.
OT에서
프로그래밍은 작은 원리를 적용하는 방법을 익히고, 연습을 통해 익숙해져야 함
이라고 말하셨는데, 완전히 동의했다.
조급해하지 말고 차근차근 정도를 걸어야지
챕터 1 강사님 오리엔테이션을 들어보니 컴퓨터 공학 지식을 잘 알고 계신 것을 넘어,
교육 방법과 효과에 대해 고민을 많이 하시는 분이라고 느껴졌다.
초보들을 위해 가능한 찬찬하고 쉽게 과외받듯이 모든 지식을 설명할 것이기 때문에 배속을 높여 들으라고 추천하셨음.
자료구조 이론 강의는 배열, 큐, 스택, 링크드리스트부터 구성되었다.
배열 List
특이사항 없음
큐 Queue
FIFO (First In First Out) - Stack과 꺼내는 순서가 반대임
Enqueue, Dequeue
일반적인 FIFO Queue

변형된 LIFO Queue

PriorityQueue - 데이터를 넣은 순서가 아닌, 우선순위에 따라 동작하는 우선순위 큐

숫자가 낮은 것이 우선순위가 높은 것
Queue 활용 예시: multi-tasking을 위한 프로세스 스케줄링 방식
스택 Stack
한쪽 끝에서만 자료를 넣거나 뺌. LIFO (Last In First Out)
Push, Pop
데이터 최대 갯수를 미리 정해야 하고, 저장 공간 낭비가 있을 수 있다는 단점 존재
Stack 활용 예시: 함수 호출 시 프로세스 실행구조. ex) 재귀함수
링크드 리스트 Linked List
미리 공간을 예약해야 한다는 배열의 단점을 극복한 자료 구조
Node: 데이터 저장 단위, (값, 포인터)로 구성
Pointer: 각 노드에서, 다음 또는 이전의 노드의 주소를 가지고 있는 공간
미리 데이터 공간을 할당하지 않아도 된다는 장점,
포인터 저장 공간이 필요하므로 저장공간 효율이 낮음
연결 정보를 찾는 시간이 필요하므로 접근 속도가 느림
중간 데이터 삽입 및 삭제 시, 앞과 뒤 데이터를 연결을 재구성해야 하는 부가적 작업 필요의 단점 존재
Linked List 중간에 값 삽입하기

Linked List 값 삭제하기
이 경우에는 세가지 케이스가 있음.
1. head 삭제
2. 마지막 node 삭제
3. 중간 node 삭제
이 중 2, 3번 케이스는 따로 구현할 필요 없음ㅎㅎ

잘 구현되었는지 확인도 해봅니다

잘 됐군요🤓
앞서 Queue에서 다룬 것처럼, Linked List도 변경된 정책들이 다양하게 존재함.
Double Linked List
Linked List의 단점: 어떤 데이터를 찾으려 하든 항상 가장 앞의 head부터 검색해야 함
LinkedList의 단점을 개선하고자 head뿐만 아니라 뒤에서부터도 찾을 수 있는 구조
허나 매우 복잡하다는 단점이 있다🤨
search 함수를 구현할 때도 앞에서부터, 뒤에서부터..
insert 함수를 구현할 때도 앞에서부터, 뒤에서부터..
그래도 연습하고자 일부분만 구현해 보자면
class Node: def __init__(self, data, prev=None, next=None): self.prev = prev self.next = next self.data = data class NodeMgmt: def __init__(self, data): self.head = Node(data) self.tail = self.head def insert(self, data): if self.head == None: self.head = Node(data) self.tail = self.head else: node = self.head while node.next: node = node.next new = Node(data) new.prev = node node.next = new self.tail = new def desc(self): node = self.head while node: print(node.data) node = node.next def search_from_head(self, data): if self.head == None: # 방어 코드 return False node = self.head while node: if node.data == data: return node else: node = node.next return False def search_from_tail(self, data): if self.head == None: # 방어 코드 return False node = self.tail while node: if node.data == data: return node else: node = node.prev return False def insert_before(self, data, before_data): if self.head == None: self.head = Node(data) self.tail = self.head return True else: node = self.tail while node.data != before_data: node = node.prev if node == None: return False new = Node(data) before = node.prev before.next = new new.prev = before new.next = node node.prev = new return True
(아닛,,, 왜 python의 생명인 들여 쓰기가 없어져 보이는 거죠…🤯)
잘 구현되었는지 확인해 보면


잘 되었습니다😎
Link
https://fastcampus.co.kr/dev_online_devjob
개발자 취업 합격 패스 With 코딩테스트, 기술면접 초격차 패키지 Online. | 패스트캠퍼스
전문가의 코딩테스트 풀이 강의, 기술면접 합격 수준 답안 강의, 네카라쿠배 합격자의 극비 노하우까지 빠짐없이 담았습니다.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
#패스트캠퍼스 #패캠 #FASTCAMPUS #자바 #자바스크립트 #파이썬 #코딩테스트 #패스트캠퍼스후기 #코딩교육 #코딩자격증