Python - 알고리즘 (최댓값,최솟값,최빈값,근삿값,평균)

2024. 2. 27. 16:40·IT/Python
목차
  1. 최대값
  2. 실습
  3. 최솟값
  4. 최빈값
  5. 풀이과정
  6. 근삿값
  7. 풀이과정
  8. 평균

최대값


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

class MaxAlgorithm: ​​​​def __init__(self, ns): ​​​​​​​​# ns: 주어진 숫자 배열 ​​​​​​​​self.nums = ns # 주어진 숫자 배열을 인스턴스 변수 nums에 저장ㅇㅇ ​​​​​​​​self.maxNum = 0 # 최대값을 저장할 변수를 초기화 ​​​​def getMaxNum(self): ​​​​​​​​self.maxNum = self.nums[0] # maxNum을 배열의 첫 번째 요소로 초기화 ​​​​​​​​# 배열을 순회하면서 최대값을 찾음 ​​​​​​​​for n in self.nums: ​​​​​​​​​​​​if self.maxNum < n: # 현재 maxNum보다 큰 수를 발견하면 ​​​​​​​​​​​​​​​​self.maxNum = n # maxNum을 해당 수로 업데이트 ​​​​​​​​return self.maxNum # 최대값 반환 # MaxAlgorithm 클래스의 인스턴스를 생성하고 주어진 배열을 전달 ma = MaxAlgorithm([-2, -4, 5, 7, 10, 0, 8, 20, -11]) # getMaxNum 메서드를 호출하여 최대값을 구하고 이를 출력 maxNum = ma.getMaxNum() print(maxNum)

실습

리스트에서 아스키코드가 가장 큰 값을 찾는 알고리즘

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): # ord = 아스키 코드 숫자로 바꾸는거 ​​​​​​​​​​​​​​​​self.maxChar = c ​​​​​​​​return self.maxChar chars =['c','x','q','a','e','P','p'] mc = maxAlgorithm(chars) maxChar = mc.getMaxChar() print(f'maxChar : {maxChar}')

최솟값


최대값 반대로~

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 ma = minAlgorithm([-2,-4,5,7,10,0,8,20,-11]) minNum = ma.getMinNum() print(minNum)

최빈값


빈도수가 가장 높은 데이터 찾기

풀이과정

1이면 indexes리스트에 index가 1인 곳에 넣고 3이면 index가 3인곳에 넣는식으로 쌓아가고 가장 큰 값 -> 최빈값

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문으로 최댓값과 그 위치 찾기 ​​​​​​​​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] # MaxAlgorithm 클래스의 인스턴스 생성 및 메서드 호출 maxAlg = MaxAlgorithm(nums) maxAlg.setMaxIdxAndNum() maxNum = maxAlg.getMaxNum() print(f'maxNum: {maxNum}') # 최댓값 출력 # 최빈값 찾기 위한 준비: 주어진 숫자들의 빈도수를 저장할 배열 생성 indexes = [0 for i in range(maxNum + 1)] # 최댓값 + 1 크기의 배열 초기화 for n in nums: ​​​​indexes[n] += 1 # 각 숫자의 등장 횟수 카운트 # 최빈값 찾기: 빈도수 배열을 MaxAlgorithm 클래스에 적용 maxAlg = MaxAlgorithm(indexes) maxAlg.setMaxIdxAndNum() maxNum = maxAlg.getMaxNum() # 최빈값의 빈도수 maxNumIdx = maxAlg.getMaxNumIdx() # 최빈값 print(f'maxNum: {maxNum}') # 최빈값의 빈도수 출력 print(f'maxNumIdx: {maxNumIdx}') # 최빈값 출력 print(f'즉, {maxNumIdx}의 빈도수가 {maxNum}으로 가장 높다.')

근삿값


가장 가까운 값을 찾자

풀이과정

for문을 이용해서 돌면서 가장 작은 차이 찾기

enumerate 사용한거

import random nums = random.sample(range(0, 50), 20) print(f'nums : {nums}') inputNum = int(input('input number : ')) print(f'inputNum : {inputNum}') nearNum = 0 # 가장 가까운 숫자 초기화 nearNumIdx = -1 # 가장 가까운 숫자의 인덱스 초기화 minDiff = 50 # 최소 차이 초기화 (가장 큰 차이로 시작) # for문 돌면서 가장 입력값과 가까운 숫자 찾기 for idx, n in enumerate(nums): ​​​​absDiff = abs(n - inputNum) # 절대값을 사용하여 차이 계산 ​​​​if absDiff < minDiff: ​​​​​​​​minDiff = absDiff # 최소 차이 ​​​​​​​​nearNum = n # 가장 가까운 숫자 ​​​​​​​​nearNumIdx = idx # 가장 가까운 숫자의 인덱스 print(f'nearNum : {nearNum}, Index : {nearNumIdx}')

평균


평균 구하기

import random nums = random.sample(range(0,100), 10) print(f'nums: {nums}') total = 0 for i in nums: ​​​​total += i avg = total / len(nums) print(f'avg : {avg}')
반응형
저작자표시 비영리 변경금지 (새창열림)

'IT > Python' 카테고리의 다른 글

Python - 알고리즘 (하노이 탑)  (3) 2024.02.28
Python - 알고리즘 (버블정렬,삽입정렬,선택정렬)  (1) 2024.02.26
Python - 알고리즘 (순위)  (0) 2024.02.26
Python - 알고리즘 (선형검색,이진검색)  (1) 2024.02.26
Python - 자료구조  (0) 2024.02.22
  1. 최대값
  2. 실습
  3. 최솟값
  4. 최빈값
  5. 풀이과정
  6. 근삿값
  7. 풀이과정
  8. 평균
'IT/Python' 카테고리의 다른 글
  • Python - 알고리즘 (하노이 탑)
  • Python - 알고리즘 (버블정렬,삽입정렬,선택정렬)
  • Python - 알고리즘 (순위)
  • Python - 알고리즘 (선형검색,이진검색)
생각 기록실
생각 기록실
AI(LLM)와 서비스 기획을 공부하며 작성하는 기술 블로그입니다. (feat. 영화리뷰를 곁들인..)
    반응형
  • 생각 기록실
    이러쿵 저러쿵
    생각 기록실
  • 전체
    오늘
    어제
  • 링크

    • Github
    • LindeIn
    • 분류 전체보기 (115)
      • 이러쿵 저러쿵 (5)
      • 정보통계 (7)
        • 데이터마이닝 (2)
        • 금융공학 (4)
      • IT (26)
        • Python (10)
        • AWS (5)
        • Github (2)
        • Project (8)
      • 리뷰 (29)
        • 영화 (22)
        • 책 (7)
      • 기타 (48)
  • hELLO· Designed By정상우.v4.10.3
생각 기록실
Python - 알고리즘 (최댓값,최솟값,최빈값,근삿값,평균)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.