코딩을 지탱하는 기술 2

문자열

문자, 문자열 문자 집합과 문자 부호화 방식 문자란 인간이 '이것은 문자라고 부르자'고 정한 기호 집합에 불과하다. 이 기호 집합을 '문자 집합', '문자 세트' 등으로 부른다. 문자 집합은 나라나 문화에 따라 다르다. 한편, 이 문자 집합을 디지털 데이터로 표현하려면 어떻게 부호화할지 정할 필요가 있다. 부호화 방법도 사람이 '이렇게 합시다'라고 정한 규칙에 불과하다. 마음대로 정해버려도 상관없는 것이다. 문자 부호화 방법의 역사를 보면 '효율이나 개인적 필요를 위해 부호화 방법을 만들자'는 세력과 '그 방법은 상호간 작업 시에 불편하니 표준화하자'는 세력 간의 치열한 다툼이 있었다. 부호화의 역사 모스 부호 On, Off, 그것의 길이를 조합으로 문자를 표현한다. 보 코드 하나의 문자를 On/Off ..

일반 2021.01.05

해시 테이블

사전(Dictionary)의 구현: 해시 테이블(Hash Table) 해시 테이블(Hash Table)은 문자열을 인수로 받아서 정수를 반환하는 '해시 함수'를 사용해서 문자열과 값의 대응 관계를 표현하는 방법이다. 값을 넣기 위해서 우선 큰 배열을 준비한다. 그리고 해쉬 함수를 사용해서 문자열을 '적당한 정수'로 변환한 후 해당 배열 어디에 넣을지를 결정한다. → 실제로 해쉬 테이블을 구현할 때 몇 가지 문제가 있다. 다른 키를 해쉬 함수에 넣었는데 가끔 같은 번지의 값을 참조하는 경우, 이를 해시 충돌(Hash Collision)이라 하며, 해결 방법으로 Chaining, Open Addressing이 있다. 공간 효율성이 떨어진다. 데이터가 저장되기 전에 미리 저장 공간..