Search

최댓값

앞서 살펴봤던, 정렬 알고리즘을 이용해서 최댓값, 최솟값을 구하는 알고리즘을 만들 수 있다.
# 최댓값 구하는 알고리즘 -> 클래스 사용 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
복사