[제로베이스 데이터취업스쿨 15기] Part. 3 자료구조&알고리즘 with Python 스터디노트 -15(5.23.)

DaHye CHOI·2023년 5월 23일
0

>⛹️‍♀️ 제로베이스 데이터취업스쿨 15기 스터디노트 15(5.23.)

🗂️ 오늘(5.23.) 수강한 분량

알고리즘 문제풀이 1~4

🗂️ 알고리즘 문제풀이 1~4 ; 한번 더 생각해볼것 & 개념 부족한 것 정리

  • 선형검색 알고리즘 : 모듈 이용하여 해당 값 도출
    선형으로 순차적 스캔 진행하여 원하는 값 나타내기
    • 기본파일
      if __name__ == '__main__' : 
      #현재 스크립트 파일이 프로그램의 시작점이 맞는지 확인하는 것/ 
      #이후에는 직접 실행되길 원하는 코드 넣어주는 것
      모듈
      def searchNumberByLineAgorith(ns,sn) 
      	searchResultIdx = -1
          print(f'Numbers : {ns}') #찾는 숫자
          print(f'SearchNumbers : {sn}') #원하는 숫자
  • 이진검색 알고리즘 : 모듈 이용하여 해당 값 도출
    정렬구조에서 중앙값과의 비교를 통한 데이터 검색
    • 모듈
      def searchNumberByLineAgorith(ns,sn)
      	searchResultIdx = -1
       	staIdx = 0
          endIdx = len(ns) -1
          midIdx = (staIdx + endIdx) // 2
          midVal - ns[midIdx]
          ~~~~
          	elif sn == midVal: #답을 찾은 경우/ 이진검색이니까 중간값
              	searchResultIdx = midIdx
  • 순위 알고리즘 : 순위에 따라 아이템 정렬 / 모듈 사용
    enumerate() : 자료형을 입력받았을 때 인덱스와 값을 포함하여 리턴
    • 모듈
      def rankAlgorithm(ns):
      	ranks = [0 for i in range(len(ns))] #0으로 초기화
          for idx, n1 in enumerate(ns):
          	for n2 in ns: #모두 비교해야해서 중첩반복
              	if n1 < n2:
                  	rank[idx] += 1
          for i, n in enumerate(ns) # 재정렬
              	searchResultIdx = midIdx
  • 순위 알고리즘 : 알파벳 문자와 정수들에 대한 순위를 정하기
    • ascIDatas = [] #변경
      for data in datas:
          if str(data).isalpha(): #데이터를 문자열로 바꾸고/알파벳인지 확인   
  • 버블정렬 알고리즘 : 숫자리스트를 오름차,내림차순으로 정렬 / 모듈 사용
    • 버블정렬 알고리즘 : 하나씩 정리해서 큰수를 제일 뒤로 미뤄냄
    • 깊은 복사 : 객체 자체 복사, 또 다른 객체를 만듬
    • 모듈
      import copy #깊은복사
      def sortByBubbleAlgorith(ns, asc = True):
          c_ns = copy.copy(ns)
          length = len(c_ns) -1
  • 선택정렬 알고리즘
  • 병렬정렬 알고리즘
    • 모듈
      def mSort(ns, asc=True):
          if len(ns) < 2:
              return ns
      #재귀알고리즘
          midIdx = len(ns) // 2
          leftNums = mSort(ns[0:midIdx], asc=asc)
          rightNums = mSort(ns[midIdx:len(ns)], asc=asc)
          mergedNums = []
          leftIdx = 0; rightIdx = 0
          while leftIdx < len(leftNums) and rightIdx < len(rightNums):
  • 최댓값 알고리즘 : 최댓값, 최대값 개수찾기 / 모듈 사용
    • class MaxAlgorithm:
        def __init__(self, ns):
            self.nums = ns
            self.maxNum = 0
            self.maxNumCnt = 0
        def setMaxNum(self):
            self.maxNum = 0
            for n in self.nums:
                if self.maxNum < n:
                    self.maxNum = n
        #외부에서 최대값만 다시 뽑기
        def getMaxNum(self):
            self.setMaxNum()
            return self.maxNum
  • 최댓값 알고리즘 : 학급 시험점수 평균, 최댓값 / 모듈 사용
  • 최소값 알고리즘 : 최소값, 최소값 개수찾기 / 모듈 사용
  • 최댓값 알고리즘 : 학급 시험점수 평균, 최댓값 / 모듈 사용
    • class ScoreManagement:
          def __init__(self,ss):
              self.scores = ss
              self.scores_tot = 0
              self.scores_avg = 0
              self.scores_min = 0
              self.scores_max = 0
          def getMinScore(self):
              if self.scores == None or len(self.scores) == 0: #예외발생금지
                  return None
                  ~~~
              self.score_tot = 0 #누적값 더하기 방지
              for score in self.scores:
                  self.score_tot += score
              return self.score_tot

👩‍🚀 스터디 감정 노트

나는 일단 진도를 나간다 근데 어지럽다 문제풀이 강의 진도를 빨리 나가고 다시 복습을 해야지(현재 복습해서 이해한 상황 자료구조...인데 불안한)🤐

[이미지 출처 : 미리캔버스]

profile
데이터가 궁금한 비전공자의 데이터스터디🫠

0개의 댓글