내일배움캠프 13일차 TIL, Dictionary
Dictionary
- 평소 배열과 List 위주로만 사용을 했었는데 이번에 프로젝트에서 케릭터 장착슬릇을 사용하게 되면서 Dictionary를 사용하게 되어 이번기회에 정리를 해 두려 한다. (이것 역시 기술면접때 물어봤던 내용들)
- Dictionary는 인덱스대신 key값을 이용하여 배열을 다룬다 보통 key-value를 한세트로 다뤄 연관 배열이라고 부른다.
- List와의 차이는 index를 통해 접근을 하냐에 따라 다른데 List는 제네릭 타입이기 떄문에 박싱 언박싱이 필요없어 안정성과 성능상에서의 이점이 있다. 동적 배열을 사용하기에 추가/삭제에선 1의 시간복잡도, 중간삽입의 경우 n의 복잡도를 가져 배열이 커질수록 비효율적이게 된다.
- Dictionary는 Hashtable 기반이라 데이터 탐색시 1의 시간 복잡도를 가지는것이 장접이다. 키의 유일성을 보장하는것이 하나의 장점이고 key를 기반으로 검색할때 list에 비해 성능상에서 이점을 가진다.
다만 key값을 이용하기에 반복문으로 순회하는것에 좋지않고 유니티 인스펙터창에 호환되지 않는 단점이 있다.
Hashtable?
- 선언시 key와 value의 데이터 타입을 정의하지 않고 오브젝트 타입으로 선언된다.
- 객체안에 어떤 타입의 데이터든 저장할수 있는것이 장점이다. 예시로 int,int쌍 string,string 이런식으로도 저장이 가능하다
- 반면 Dictionary의 경우 제네릭 타입이라 지정된 형식으로만 저장이 가능하다.
- 해시테이블은 여러타입을 수용할 수 있고 딕셔너리는 속도가 빠른 장점이있다. 하지만 보통 개발에선 배열에 여러가지를 넣을 이유가 없으므로 Dictionary를 사용한다.
프로젝트 간단 리뷰
- 코드수정은 늘 힘든것같다. 특히 console창에 텍스트 찍는거 너무너무너무너무너무
힘들다.
- 얼추 기능은 다 넣어논것같긴하다 버그가 좀 많긴한데 오늘 내일해서 최대한 버그를 수정하고 있다.
- 내일 merge작업좀 거치면 얼추 큰틀은 완성할수 있을것 같다. 데이터작업과 밸런스적인 부분을 좀 수정할 예정이다.
- 기능 구현을 다하면 금요일엔 꾸미는거 연습좀 하면서 마무리 잘 지어야겠다.
오늘의 회고
- 왠지 모르게 피곤해서 생각보다 작업을 많이 못한것같다. 오늘 푹자고 일어나서 내일 다시 달려야 겠다.
- 내일 코딩테스트도 본다는데 흠... 어느정도 난이도일지 잘 모르겠다. 일단 최선을 다해야 겠다.