알고리즘 (최대값,최소값,최빈값,근사값,평균)

Lee JunBok·2023년 5월 6일

알고리즘

목록 보기
3/4
post-thumbnail

최대값

자료구조에서 가장 큰 값을 찾는다

class MaxAlgorithm:

    def __init__(self, ns):
        self.nums = ns
        self.maxNum = 0

    def getMaxNum(self):

        self.maxNum = self.nums[0]

        for n in self.nums:
            if self.maxNum < n:
                self.maxNum = n
        
        return self.maxNum

nums = [-2, -4, 5, 7, 10, 0, 8, 20, -11]

ma = MaxAlgorithm(nums)
maxNum = ma.getMaxNum()
print(f'maxNum : {maxNum}')

최소값

자료구조에서 가장 작은 값을 찾는다

class MinAlgorithm:

    def __init__(self, ns):
        self.nums = ns
        self.minNum = 0

    def getMinNum(self):

        self.minNum = self.nums[0]

        for n in self.nums:
            if self.minNum > n:
                self.minNum = n
        
        return self.minNum

nums = [-2, -4, 5, 7, 10, 0, 8, 20, -11]

ma = MinAlgorithm(nums)
minNum = ma.getMinNum()
print(f'minNum : {minNum}')

최빈값

데이터에서 빈도수가 가장 많은 데이터를 최빈값이라고 한다.

class MaxAlgorithm:

    def __init__(self, ns):
        self.nums = ns
        self.maxNum = 0
        self.maxNumIdx = 0

    def setMaxIdxAndNum(self):
        self.maxNum = self.nums[0]
        self.maxNumIdx = 0

        for i, n in enumerate(self.nums):
            if self.maxNum < n:
                self.maxNum = n
                self.maxNumIdx = i

    def getMaxNum(self):
        return self.maxNum
    
    def getMaxNumIdx(self):
        return self.maxNumIdx
    
nums = [1, 3, 7, 6, 7, 7, 7, 12, 12, 17]

maxAlo = MaxAlgorithm(nums)
maxAlo.setMaxIdxAndNum()
maxNum = maxAlo.getMaxNum()
print(f'maxNum : {maxNum}')

indexes = [0 for i in range(maxNum + 1)]
print(f'indexes : {indexes}')
print(f'indexes length : {len(indexes)}')


for n in nums:
    indexes[n] = indexes[n] + 1
print(f'indexes : {indexes}')

maxAlo = MaxAlgorithm(indexes)
maxAlo.setMaxIdxAndNum()
maxNum = maxAlo.getMaxNum()
maxNumIdx = maxAlo.getMaxNumIdx()
print(f'maxNum : {maxNum}')
print(f'maxNumIdx : {maxNumIdx}')

print(f'즉, {maxNumIdx}의 빈도수가 {maxNum}로 가장 높다')

근사값

특정 값(참값)에 가장 가까운 값

import random

nums = random.sample(range(0,50), 20)
print(f'nums : {nums}')

inputNum = int(input('input number : '))
print(f'inputNum : {inputNum}')

nearNum = 0
minNum = 50

for n in nums:
    absNum = abs(n - inputNum)
    # print(f'absNum: {absNum}')

    if absNum < minNum:
        minNum = absNum
        nearNum = n

print(f'nearNum: {nearNum}')

평균

여러 수나 양의 중간값을 갖는 수

import random

nums = random.sample(range(0,100),10)
print(f'nums : {nums}')

total = 0
for n in nums:
    total += n

average = total / len(nums)
print(f'average : {average}')

이글은 제로베이스 데이터 취업스쿨의 강의자료 일부를 발췌하여 작성되었습니다.

profile
Learning Data Analyst

0개의 댓글