본문 바로가기

카테고리 없음

UNITY 게임개발트랙 - 내일배움캠프 57일차 TIL

내일배움캠프 57일차 TIL

오늘도 오전에 기술면접 예상질문을 풀어보고 팀 프로젝트 개발을 진행했다.

배열과 List, ArrayList, Dictionary 의 차이점

  • 배열은 특정 타입의 연속된 메모리를 정적으로 선언하여 관리할 수 있다.

  • List는 특정 타입의 연속된 메모리를 동적으로 관리하며, 크기가 부족할 경우 2배로 할당하고 연속되게 할당할 메모리가 없다면 새로운 메모리 공간으로 이주하여 연속된 메모리를 할당한다.

  • ArrayList는 불특정 타입의 List이다. 불특정 타입이라 편하지만, 넣고 뺄 때 느리다.

  • Dictionary는 특정 타입을 키과 밸류로 관리하는 방식이다.

    Dictionary는 어떻게 구현해야 하나요?

    • Dictionary는 불변값인 key와 가변값인 value로 쌍을 이뤄 데이터를 저장합니다. 또한 중복키를 허용하지 않고 그 이전값에 덮어쓰기하므로 ContainsKey를 사용해 이미 존재하는 키인지 확인해야 합니다.

      Dictionary 검색이 빠른 이유는 무엇인가요?

    • 해시테이블을 사용하기 때문입니다. 해시테이블의 검색 속도가 빠른 이유는 해시함수의 계산이 빠르고 배열을 사용해 데이터를 저장하므로 키의 해시값을 인덱스로 사용해 바로 해당 위치의 데이터에 접근할 수 있기 때문입니다.
    • 충돌 해결 방법도 하나의 이유입니다. 해시테이블에서 여러 개의 키가 동일한 해시값을 가질경우 해시 충돌이 발생하는데 이러한 충돌을 해결하기 위해 체이닝이나 개방 주소법을 사용해 최악의 경우에도 검색 속도가 일정하게 유지됩니다.