[TIL] 57일차 - 자료구조에 대한 고민

김유원·2024년 3월 15일
0

📝 24.03.15

오늘의 질문

배열과 List, ArrayList, Dictionary 의 차이점을 설명해주세요.

나의 답변

배열과 List, ArrayList, Dictionary은 고정된 크기가 할당되어 있는지 없는지에 차이가 있습니다. 배열은 객체 생성시 크기 할당이 필수적인 반면, 다른 셋은 크기를 동적으로 할당할 수 있어 삽입과 삭제가 용이합니다. ArrayList는 List와 유사하지만 고정된 데이터 타입을 사용하는 List와 달리 다양한 데이터 타입을 모두 넣을 수 있다는 차이점이 있습니다. Dictionary는 다른 자료구조들과 달리 키와 값을 쌍으로 관리하는 자료구조입니다.

  • (꼬리질문 a.) Dictionary는 어떻게 구현해야 하나요?

    Dictionary는 key와 값을 함께 저장하여 구현해야 합니다. Dictionary는 key를 이용하여 값을 검색하기 때문에, key는 중복하여 사용할 수 없습니다.

  • (꼬리질문 b.) Dictionary 검색이 빠른 이유는 무엇인가요?

    Dictionary의 검색이 빠른 이유는 key에 해시 함수를 적용하여 고유 인덱스를 만들어 저장하기 때문입니다. 따라서 key으로 해시 함수를 한번만 수행하면 데이터를 검색할 수 있으므로 시간 복잡도가 O(1)이되므로 검색이 매우 빠릅니다.




자료구조를 구상하는 것은 늘 어려운 일이다. 오늘 작업의 90퍼센트가 바로 자료구조를 고민하는 일이었어서 더더욱 그렇게 느끼는 것 같다.

사실 스킬 리스트를 구현할 때 각 직군별로 구성 방식이 아예 달라 따로 만들 것인지 아니면 이중리스트를 각기 다른 사이즈로 만들어 적용할 것인지가 고민이었는데, 결국 이중 리스트로 결정하였다. 데이터를 불러오는 시점이 같아서 이를 다르게 분리할 이유를 못느꼈기 때문이다.

배움의 과정이기 때문에 어떤 이유로 무엇을 어떻게 결정하였는지를 늘 고민하고 작성해두려고 노력하고 있다.

profile
개발 공부 블로그

0개의 댓글

관련 채용 정보