deda
Deda의 데이터 디자인
deda
전체 방문자
오늘
어제
  • 분류 전체보기 (121)
    • Python (27)
      • Python 기초 (17)
      • Python 데이터분석 (10)
    • SQL (9)
    • Coding test (54)
      • Python 기초문제 (45)
      • LeetCode (9)
    • BigData (2)
    • ZeroBase (3)
    • UX (0)
    • Business Review (1)
    • 통계 & 수학 (17)
      • 통계학 (14)
      • 수학 (3)
    • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 군수열
  • BMI
  • 소인수분해
  • 계산기
  • matplotlib
  • 등차수열
  • 파이썬
  • 통계
  • 최소공배수
  • SQL
  • 등비수열
  • 미니콘다
  • pandas
  • 팩토리얼
  • 데이터분석가
  • 마이데이터
  • 제로베이스
  • 계차수열
  • 모듈
  • 부트캠프
  • 릿코드
  • 함수
  • 데이터사이언티스트
  • 데이터엔지니어
  • 빅데이터
  • 기초수학
  • 코딩
  • 네카라쿠배
  • 데이터분석
  • 프로그래밍

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
deda

Deda의 데이터 디자인

[파이썬 기초] 알고리즘 - 검색,순위
Python/Python 기초

[파이썬 기초] 알고리즘 - 검색,순위

2022. 5. 6. 18:37

🔍  알고리즘이란?

- 문제를 풀기 위한 일련의 절차나 방법


 

🗝 선형 검색

- 선형(일렬)으로 나열되어 있는 데이터를 순차적으로 스캔하며 원하는 값을 찾는다.

datas = [1,3,6,7,8,4,9,11,5]

searchData = int(input('찾으려는 데이터 입력:'))
searchResultIdx = -1

n = 0
while True:
    if n == len(datas):
        searchResultIdx = -1
        break

    elif datas[n] == searchData:
        searchResultIdx = n
        break

    n += 1

print(f'searchResultIdx: {searchResultIdx}')

 

🗝 보초법

- 마지막 인덱스에 찾으려는 값을 추가해서 찾는 과정을 간략화한다.

datas = [1,3,6,7,8,4,9,11,5]

searchData = int(input('찾으려는 데이터 입력:'))
searchResultIdx = -1

datas.append(searchData)

n = 0
while True:
    if datas[n] == searchData:
        if n != len(datas) -1:
            searchResultIdx = n
        break

    n += 1

print(f'searchResultIdx: {searchResultIdx}')

 

🗝 이진검색

- 정렬되어 있는 자료구조에서 중앙값과의 크고 작음을 이용해서 데이터를 검색

datas = [1,2,3,4,5,6,7,8,9,10,11]

searchData = int(input('숫자 입력:'))
searchResultIdx = -1

staIdx = 0
endIdx = len(datas)-1
midIdx = (staIdx + endIdx) // 2

midVal = datas[midIdx]

while searchData <= datas[endIdx] and searchData >= datas[staIdx]:

    if searchData == datas[len(datas)-1]:
        searchResultIdx = len(datas) -1
        break

    if searchData > midVal:
        staIdx = midIdx
        midIdx = (staIdx + endIdx) // 2
        midVal = datas[midIdx]


    elif searchData < midVal:
        endIdx = midIdx
        midIdx = (staIdx + endIdx) // 2
        midVal = datas[midIdx]

    elif searchData == midVal:
        searchResultIdx = midIdx
        break

print(f'searchDataIdx: {searchResultIdx}')

 

🗝 순위

- 수의 크고 작음을 이용해서 수의 순서를 정하는 것.

import random

nums = random.sample(range(50, 101),20)
ranks = [0 for i in range(20)]  # 각 값에 0 할당

for idx, num1 in enumerate(nums):
    for num2 in nums:
        if num1 < num2:
            ranks[idx] += 1

print(f'nums: {nums}')
print(f'ranks: {ranks}')

for idx, num in enumerate(nums):
    print(f'num: {num} \t rank: {ranks[idx]+1}')
 

[순위] 중간, 기말 점수 격차 확인

🔍  문제 학급 학생 20명의 중간, 기말 점수 순위를 구하고, 두 시험의 편차를 출력하는 프로그램 생성 🖥 실행 1) 모듈 class RankDeviation: def __init__(self, mss, ess): self.midStuScos = mss self.endStu..

designingdata.tistory.com

 

'Python > Python 기초' 카테고리의 다른 글

[파이썬 기초] 알고리즘 - 최대값, 최소값  (0) 2022.05.12
[파이썬 기초] 알고리즘 - 정렬  (0) 2022.05.06
[파이썬 기초] 딕셔너리(Dictionary)  (0) 2022.05.04
[파이썬 기초] 튜플(Tuple)  (0) 2022.05.03
[파이썬 기초] 리스트(list)  (0) 2022.05.02
    'Python/Python 기초' 카테고리의 다른 글
    • [파이썬 기초] 알고리즘 - 최대값, 최소값
    • [파이썬 기초] 알고리즘 - 정렬
    • [파이썬 기초] 딕셔너리(Dictionary)
    • [파이썬 기초] 튜플(Tuple)
    deda
    deda
    데이터 분석 / 파이썬 / UX / 정량리서치

    티스토리툴바