내일배움캠프 30일차 TIL : 준비, 자료구조 복습

김정환·2024년 10월 25일
0

키워드

  • 작업 준비
  • 자료구조 복습

작업 준비

강의를 다 듣고 이제 과제를 시작해보려고 한다.
이번에는 좀 더 늦게 시작했는데, 저번에 했던 반성을 좀 반영해보느라 시작이 약간 늦어졌다.

늘 개발할 목록을 보고 바로 개발했는데 추후에 도전 기능을 개발을 시작할 때 수정하느라 애를 먹었다.
저번에는 반나절을 코드를 확장가능하도록 고치는데 썼었다.
이번에는 그런 짓을 안하려고 먼저 기능들을 분류하고 어떻게 연계되는지 정리해봤다.

전체적으로 읽어보고 구성하는데 생각보다 얼마 안 걸려서 좋았다.
이렇게 해두면 그래도 책임 분리하는데 도움은 되겠지.

자료구조 복습

특강 녹화본이 올라온 걸 좀 나중에 알았다.
특강에서 나온 질문이 있어서 정리했다.

기술 면접 나올 수 있는 질문

  • 딕셔너리를 사용해봤다면 주요 메서드에 대해 설명해보시오.
    • Add(TKey, TValue) : 딕셔너리에 매개변수로 입력한 key와 value를 쌍으로 묶어 저장합니다.
    • TryGetValue(TKey key , out Tvalue value) : 딕셔너리에 매개변수로 입력한 key 값의 존재 여부를 반환합니다. 그리고 키가 있으면 키에 대한 값을 out 키워드 매개변수로 출력합니다.
    • Contains(TKey) : 딕셔너리에 매개변수로 입력한 key값이 있는지 여부를 bool로 반환합니다.
  • 데이터를 찾는 연산의 시간복잡도?
    • 딕셔너리에서 값을 찾는 연산의 시간복잡도는 입력한 key를 해시 함수를 사용해 인덱스를 구하는 과정을 거치는데, 이때 해시로 바꿔줄 때 상수 시간을 가지므로 O(1)입니다.
    • 단, 딕셔너리는 해시 테이블을 linked list를 이용하여 구현하는데 이때 해싱 과정에서 버킷의 충돌이 발생할 수 있습니다. 딕셔너리는 해시 테이블의 크기를 늘려 충돌을 처리합니다. 이 처리 과정에서 기존의 데이터를 새 list에 재할당하는 과정을 거치기에 경우에 따라서 O(n)의 시간 복잡도를 가질 수 있습니다.
  • 딕셔너리에서 해싱을 통해 데이터를 찾는 과정을 설명해보시오
    • 딕셔너리는 데이터를 저장할 때 해시 테이블을 이용합니다.
      key를 해시 함수를 통해서 고유의 해시값으로 변환하고 이 해시값에서 해시 테이블의 크기를 나눈 나머지를 인덱스로 사용합니다.
      해시 테이블은 배열로 구현되어 있어 인덱스를 통한 접근을 통해 O(1)을 보장하며
      이렇게 접근한 해시 테이블의 요소인 버킷에서 키(key)와 쌍을 이루고 있는 값(value)을 반환합니다.
  • (드물지만) foreach가 되는 이유?
    • 딕셔너리는 내부에 데이터를 저장할 때 해시 테이블을 사용합니다.
      이 해시 테이블의 구현이 배열로 이루어져있기에 foreach를 통해서 각 요소에 접근할 수 있는 것입니다.

자세한 내용

#내일배움캠프 #스파르타내일배움캠프 #스파르타내일배움캠프TIL

profile
사파 개발자

0개의 댓글