최댓값 알고리즘은 말 그대로 최댓 값을 찾는 알고리즘으로 최대값 변수를 원소들 중 첫번째 값으로 초기화 하고 그 다음 원소를 하나하나 비교해가며 값이 큰 원소를 최대값 변수에 담으면 된다.(최솟값도 동일한 방법)
최솟값, 최댓값 두 가지를 찾는 알고리즘을 클래스로 구현해 보았다.
class MinMax:
def __init__(self,numslist):
self.nums = numslist
self.maxNum = 0 #최대값
self.minNum = 0 #최소값
def getMax(self):
self.maxNum = self.nums[0]
for i in self.nums:
if self.maxNum < i :
self.maxNum = i
return self.maxNum
def getMin(self):
self.minNum = self.nums[0]
for i in self.nums:
if self.minNum > i :
self.minNum = i
return self.minNum
list = [2,3,6,1,45,34,64,61,1,35,13,5]
M = MinMax(list)
print(f'Max is : {M.getMax()}')
print(f'Min is : {M.getMin()}')
데이터에서 빈도수가 가장 많은 데이터를 최빈값이라고 한다. 최빈값 알고리즘을 이용해서 학생 50명의 점수 분포를 다음과 같이 나타내 보자.
import random
scores = []
for i in range(50): #50번 반복
#n = random.radiant(70,100) # 70이상 100이하 무작위
n = random.randrange(70,100,5) # 70이상 100이하 간격은 5로 무작위
scores.append(n)
print(f'Scores list is : {scores}')
idxs = [0]*(max(scores)+1)
for i in scores:
idxs[i] += 1
while True:
maxScoreCnt = max(idxs)
maxScore = idxs.index(maxScoreCnt)
if maxScoreCnt == 0:
break
countstr = '+'*maxScoreCnt
print(f'{maxScore} count is : {maxScoreCnt} {countstr}')
idxs[maxScore] = 0
특정 값(참값)에 가장 가까운 값을 근삿값이라고 한다.
list = [7, 43, 14, 44, 6, 26, 24, 3, 25, 47, 2, 32, 27, 38, 18, 17, 33, 29, 28, 0]
inputNum = int(input())
nearNum = 0
gap = max(list)
for num in list:
if abs(num-inputNum) < gap :
gap = abs(num-inputNum)
nearNum = num
print(f'Near num is : {nearNum}')
print(f'Gap is : {gap}')