카테고리 없음

[인프런 수강일기#2] 기출로 대비하는 개발자 전공면접 [CS 완전정복]

ヽ(°ᴥ°)ノ 2024. 1. 6. 19:52

먼저 1주차에는 "자료구조"를 배우고, 예상 질문과 답변을 작성해보고 서로 피드백하는 시간을 가졌습니다!!

 

크게 아래 개념들을 복습했습니다

Array, Dynamic Array, Linked List

연산 Array Linked List
크기 고정적
(메모리 낭비 or overhead)
가변적
(필요한만큼 메모리 할당)
메모리 저장 방식 연속적 메모리상에서 불연속
(다음 원소의 메모리 주소값을 저장해 논리적 연속성 유지)
조회 O(1) O(n)
삽입, 삭제 O(n) O(1)
( 다음주소를 가르키는 부분만 다른 주소 값으로 변경하면 되기 때문에 O(1)이지만, 실질적으로 추가/삭제를 하려는 index까지 도달하는데
O(n)O(n)의 시간이 걸리기 때문에 O(n)으로 볼 수 있다 )
언제 사용? - 조회 자주 해야할 때
- Array 선언 당시 데이터 개수 알고 있을때
- 데이터를 반복문을 통해 빠르게 순회할때
- 메모리를 적게 쓰는게 중요할때 (
Linked List보다 메모리 적게 사용)
- 삽입, 삭제 빈번할 때
- 데이터 크기 가변적일 때
- 조회 작업 많이 없을 때

 

Queue, Stack, Priority Queue

 

Binary Search Tree, Hash Table, collision

  • Direct-address
    • 불필요한 공간 낭비
    • key가 다양한 자료형을 담을 수 없게됨

  • Hash table
    • Hash function
      • key를 이용해 hash값을 만들어냄
      • collision을 최소화하는 방향으로 설계해야함
    • 시간 복잡도
      • 저장, 삭제, 검색 O(1)이지만 collision으로 인하여 최악의 경우 O(n)이 될 수 있음
    • 장점
      • 많은 양의 데이터 빠르게 탐색
      • 적은 자원으로 많은 양의 데이터 효율적 관리
      • 하드디스크나, 클라우드에 존재하는 무한한 데이터들을 유한한 개수의 해시값으로 매핑하면 작은 메모리로도 프로세스 관리 가능

  • Collision 충돌
    • 서로 다른 key의 해시값이 똑같을 때 발생 (= 해시값 중복)
    • 해결방법
      • seperate chaining
      • open addressing

 

 

 

스터디 후기

어느정도 자료구조를 알고 있다고 생각했는데, 생각보다 질문을 딱 들었을때 바로 대답할 수 있는 질문이 거의 없어서 제대로 더 공부하고 이해해야겠다는 생각이 들었습니다. 

스터디원들의 예상 질문이 총 17개가 모였고, 그 질문들과 답변들을 읽는 시간을 가졌습니다.

질문들중에는 실제 스터디원분들이 면접에서 받은 질문도 있어서 큰 도움이 됐습니다 그리고 실제로 면접에 많이 나오는 질문들이구나,,를 실감하게 되는 시간이었습니다..!!

그리고 강의에 없는 추가 개념들도 같이 공유해볼 수 있어서 좋았어요

 

답변을 달고 같이 얘기하며 느낀점은, 확실히 단순히 글로 답변을 적는 것보다 읽으면서 문맥을 다듬으면서 적어보는게 큰 도움이 된다는 것이었습니다!! 어쨋든 실제 면접에서 대답할 답변들이기 때문에 읽어보며 준비하는 연습이 필요하다고 느꼈습니다 ㅎㅎ

 

이상 자료구조 스터디 후기였습니다

 

 

 

 

 

위 내용은 아래 강의를 듣고 작성한 내용입니다

https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%A0%84%EA%B3%B5%EB%A9%B4%EC%A0%91-cs-%EC%99%84%EC%A0%84%EC%A0%95%EB%B3%B5