앞서 살펴봤던, 정렬 알고리즘을 이용해서 최댓값, 최솟값을 구하는 알고리즘을 만들 수 있다.
# 최댓값 구하는 알고리즘 -> 클래스 사용
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
ma = MaxAlgorithm([-2,-4,5,7,10,0,8,20,-11])
print(f'Max Number : {ma.getMaxNum()}')
Python
복사
# 리스트에서 아스키 코드가 가장 큰 값을 찾는 알고리즘을 만들자
# 파이썬의 내장 함수 'ord() : 문자값을 아스키 코드의 숫자값으로 변경해준다.' 를 사용하면 된다.
class MaxAlgorithm:
def __init__(self,cs):
self.chars = cs
self.maxChar = 0
def getMaxChar(self):
self.maxChar = self.chars[0] # 들어온 리스트의 맨 첫번째 값을 최댓값으로 일단 설정
for c in self.chars:
if ord(self.maxChar) < ord(c):
self.maxChar = c
return self.maxChar
char = ['c','x','Q','A','e','P','p']
mc = MaxAlgorithm(char)
maxChar = mc.getMaxChar()
print(f'maxChar : {maxChar}')
Python
복사
# max.py
# 리스트에서 최댓값을 찾는 클래스를 만들자.
# 파이썬의 내장 함수 'ord() : 문자값을 아스키 코드의 숫자값으로 변경해준다.' 를 사용하면 된다.
class MaxAlgorithm:
def __init__(self,ns):
self.nums = ns
self.maxNum = 0
self.maxNumCnt = 0
def setMaxNum(self):
self.maxNum = self.nums[0] # 맨 첫번째 값을 최댓값으로 일단 초기화
for n in self.nums:
if self.maxNum < n:
self.maxNum = n
def getMaxNum(self):
self.setMaxNum()
return self.maxNum
def setMaxNumCnt(self):
self.setMaxNum()
# 구해진 최댓값과 같은 값이 있는지 확인해주자
for n in self.nums:
if self.maxNum == n:
self.maxNumCnt += 1
def getMaxNumCnt(self):
self.setMaxNumCnt()
return self.maxNumCnt
Python
복사
import random
import max
nums = []
for _ in range(30):
n = random.randint(1,50)
nums.append(n)
print(f'nums : {nums}')
ma = max.MaxAlgorithm(nums)
# 최댓값 가져오기
max_num = ma.getMaxNum()
print(f'최댓값 : {max_num}')
# 최댓값 개수 가져오기
max_cnt = ma.getMaxNumCnt()
print(f'최댓값 개수 : {max_cnt}')
Python
복사
# 리스트에서 최댓값을 찾는 클래스를 만들자.
# 파이썬의 내장 함수 'ord() : 문자값을 아스키 코드의 숫자값으로 변경해준다.' 를 사용하면 된다.
# max.py
def getAvg(ns):
total = 0
for n in ns:
total += n
return round(total / len(ns),2)
def getMax(ns):
maxN = ns[0]
for n in ns:
if maxN < n:
maxN = n
return maxN
def getDeviation(n1,n2): # 편차를 구해주는 함수
return round(abs(n1 - n2),2)
Python
복사
import random
import max
scores = [100, 64, 94, 66, 75, 58, 99, 76, 96,
74, 54, 73, 88, 70, 68, 50, 95, 89, 69, 98]
print(f'nums : {scores}')
score_avg = max.getAvg(scores)
print(f'score avg : {score_avg}')
score_max = max.getMax(scores)
print(f'score max : {score_max}')
score_dv = max.getDeviation(score_avg, score_max)
print(f'avg and max deviation : {score_dv}')
Python
복사