자료구조(3) 배열과 문자열

9일차 게일 라크만 맥도웰의 코딩 인터뷰 완전 분석 예제 1.4~1.9 내용 정리 9 면접 문제 1.4 회문 순열 주어진 문자열이 회문(palindrome)의 순열인지 아닌지 확인하는 함수를 작성하라. 회문이란 앞으로 읽으나 뒤로 읽으나 같은 단어 혹은 구절을 의미하며, 순열이란 문자열을 재배치하는 것을 뜻한다. 회문이 꼭 사전에 등장하는 단어로 제한될 필요는 없다. 예제 입력 : Tact Coa 출력 : True (순열: “taco cat”, “atco cta” 등) 1 2 3 4 5 6 7 def main(s): arr = list(s) new_arr = set(arr) if 2*len(new_arr) - len(arr) <= 1: return True else: return False 1.5 하나 빼기 문자열을 편집하는 방법에는 세 가지 종류가 있다. 문자 삽입, 문자 삭제, 문자 교체. 문자열 두 개가 주어졌을 때, 문자열을 같게 만들기 위한 편집 횟수가 1회 이내인지 확인하는 함수를 작성하라. ...

2023년 9월 13일 · 3 분 · 배준수

자료구조(1) 해시테이블

8일차 게일 라크만 맥도웰의 코딩 인터뷰 완전 분석 p.133 ~ p. 136, 예제 1.1~1.3 내용 정리 9 면접 문제 01 배열과 문자열 해시테이블 해시테이블(hash table)은 효율적인 탐색을 위한 자료구조 키(key)를 값(value)에 대응시킨다. 연결리스트(linked list)와 해시 코드 함수(hash code function)로 구현할 수 있다. 키와 값을 넣는 과정 키의 해시 코드를 계산한다. 키의 자료형은 보통 int 혹은 long. hash(key) % array_length와 같은 방식으로 해시 코드를 이용해 배열의 인덱스를 구한다. 배열의 각 인덱스에는 키와 값으로 이루어진 연결리스트가 존재한다. 키와 값을 해당 인덱스에 저장한다. 반드시 연결리스트릴 이용한다. 충돌 : 서로 다른 두개의 키가 같은 해시 코드를 가리키거나 서로 다른 두 개의 해시 코드가 같은 인덱스를 가리키는 경우 ...

2023년 9월 12일 · 3 분 · 배준수