[모각코] 2회차(12.30) 결과

2020. 12. 31. 01:31·🎒 학교/20 동계 모각코: 와팬호
728x90

01 검색 알고리즘

- 배열 검색을 다룸

01-1 선형 검색 (linear search) -> O(n)

: 무작위로 늘어놓은(선형) 데이터 집합에서 검색을 수행(가장 기본적인 배열 검색 알고리즘)

 

▶ 선형 검색의 종료조건

    - 검색 실패 # n+1

    - 검색 성공 # n

i = 0
"""sequence a에서 key와 값이 같은 원소를 선형 검색"""
while True:
    if i == len(a):
	# 검색 실패
    if a[i] == key:
    	# 검색 성공
    i += 1 # index 증가

- 값이 정렬되지 않은 배열에서 검색할 때 사용하는 유일한 방법

 

01-1 추가) 보초법(sentinel method)

: 종료 조건 검사 비용(cost)를 반으로 줄이는 방법

- 종료 조건1이 while문에서 삭제될 수 있음!

 

01-2 이진 검색 (bineary search) -> O(log n)

: 일정한 규칙으로 늘어놓은 데이터 집합에서 아주 빠른 검색을 수행

- 정렬된 데이터!

pl    pc    pr

pl: 맨 앞 원소 인덱스

pc: 중앙 원소 인덱스

pr: 맨 끝 원소 인덱스

 

▶이진 검색의 종료 조건

    - a[pc]와 key가 일치하는 경우

    - 검색 범위가 더 이상 없는 경우

def bin_search(a: Sequence, key: Any) -> int:
	"""시퀀스 a에서 key와 일치하는 원소를 이진 검색"""

	pl = 0 # 검색 범위 맨 앞 원소의 인덱스
	pr = len(a) - 1 # 검색 범위 맨 끝 원소의 인덱스

	while True:
		pc = (pl + pr) // 2 # 중앙 원소의 인덱스
    		if a[pc] == key:
    			return pc # 검색 성공
    		elif a[pc] < key:
    			pl = pc + 1 # 검색 범위를 뒤쪽 절반으로 좁힘
        	else:
        		pr = pc - 1 # 검색 범위를 앞쪽 절반으로 좁힘
        	if pl > pr:
        		break
	return -1 # 검색 실패  

필요한 평균 비교 횟수 = 평균 log n

 

복잡도(complexity)

- 시간 복잡도: 실행하는 데 필요한 시간

- 공간 복잡도: 메모리(기억 공간)와 파일 공간이 얼마나 필요한 지

 

01-3 해시법 (hashing)

: 추가 or 삭제가 자주 일어나는 데이터 집합에서 아주 빠른 검색을 수행

'데이터를 저장할 위치 = 인덱스'를 간단한 연산으로 구하는 것

+검색, 추가, 삭제 효율적 수행

 

- 원소 값(key)

- 해시값(hash value): 원소값 % 13

- hash table: 해시값을 인덱스로 하여 원소를 새로 저장

- hash function: 키를 해시값으로 변환하는 과정

 

해시 충돌

일반적으로 키와 해시값은 다 대 1(n : 1)이다.

저장할 버킷이 중복되는 현상 -> 충돌(collision)

+ 버킷(bucket): 해시 테이블에서 만들어진 원소

 

해시값이 같은 데이터 저장하기(해시 충돌 해결법)

1) 체인법 (chaining)  = 오픈 해시법(open hasing)

: 같은 해시값 데이터를 연결 리스트로 연결

 

 

2) 오픈 주소법

: 데이터를 위한 해시값이 충돌할 때 재해시(rehash)

 

728x90

'🎒 학교 > 20 동계 모각코: 와팬호' 카테고리의 다른 글

[모각코] 3회차(01.04) 결과  (0) 2021.01.04
[모각코] 3회차(01.04) 계획  (0) 2021.01.04
[모각코] 2회차(12.30) 계획  (0) 2020.12.30
[모각코] 1회차(12.28) 결과  (0) 2020.12.28
[모각코] 1회차(12.28) 계획  (0) 2020.12.28
'🎒 학교/20 동계 모각코: 와팬호' 카테고리의 다른 글
  • [모각코] 3회차(01.04) 결과
  • [모각코] 3회차(01.04) 계획
  • [모각코] 2회차(12.30) 계획
  • [모각코] 1회차(12.28) 결과
soyang.
soyang.
AI/Agent/개발 지식 Archive.
  • soyang.
    소소한 코딩일지
    soyang.
  • 전체
    오늘
    어제
  • 링크

    • Github 🐾
    • 포트폴리오 📓 (리뉴얼중)
    • LinkedIn 👩🏻‍💼
  • 공지사항

    • 소소한 코딩일지
  • 블로그 메뉴

    • 방명록
    • 분류 전체보기 (181)
      • 🚩 목표 & 회고 (9)
      • 📓 Papers (10)
      • 🧇 Algorithm (44)
        • 이론 (1)
        • LeetCode (2)
        • 프로그래머스 (30)
        • 백준 (11)
      • 💻 Study (47)
        • 🤖 AI 인공지능 (3)
        • Python 파이썬 (3)
        • Docker 도커 (4)
        • 웹 (20)
        • 안드로이드 (2)
        • JAVA 자바 (1)
        • Firebase (3)
        • Linux 리눅스 (10)
      • 🍪 Projects (2)
      • 🎒 학교 (44)
        • 대학원 도비 (2)
        • 21 동계 모각코: 슈붕팥붕 (13)
        • 21 하계 모각코: 와팬호 (13)
        • 20 동계 모각코: 와팬호 (13)
      • 활동들 (16)
        • 인프런 대학생 LEAF 2기 (9)
        • 2021 Silicon Valley Online .. (7)
  • 태그

    노마드코더
    프로그래머스
    React
    error
    Algorithm
    programmers
    Linux
    공부
    리액트
    Gentoo
    목표
    백준
    코딩테스트
    모각코
    Artificial Intelligence
    Python
    알고리즘
    Ai
    알고리즘스터디
    인프런대학생Leaf
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
soyang.
[모각코] 2회차(12.30) 결과
상단으로

티스토리툴바