python 최댓값 찾기 알고리즘

‍Juhee Kim·2021년 7월 16일
0

최댓값 찾기 알고리즘

주어진 숫자 n개 중 가장 큰 숫자를 찾는 알고리즘 만들기 !

알고리즘 내용을 대충 정리 해 보면,
1. 17, 92, 18, 33, 58, 7, 33, 42 중 최댓값을 찾아보자
2. 첫번째 숫자(17)를 최댓값으로 기억하기
3. 두번째 숫자 92를 현재 최댓값(17)과 비교 후, 더 큰 값을 최댓값으로 저장한다(92)
4. 세 번째 숫자부터 2-3 과정을 반복하기
5. 마지막 비교에서 현재 최댓값(92)와 42 비교하기
6. 마지막으로 최댓값으로 기억 된 숫자 92가 주어진 숫자 중 최댓값이다

def find_max(a):
  n = len(a)
  max_v = a[0] 		# 리스트의 첫번째 값을 최댓값으로 먼저 저장
  for i in range(1, n): # 1부터 n-1까지 반복
    if a[i] > max_v: 	# 지금 값이 현재 최댓값보다 크면
      max_v = a[i] 	# 최댓값 변경
  
  return max_v

#리스트를 함수에 넣어보기
v = [17, 92, 18, 33, 58, 7, 33, 42]
print(find_max(v))
# 결과 : 92

응용 1. 위치 찾기

리스트에 숫자가 n개 있을 때 가장 큰 값이 있는 위치 번호를 돌려주는 알고리즘 만들어 보기 !

최댓값이 리스트의 어느 위치에 있는 문제로 살짝 응용해보자

def find_max_idx(a):
  n = len(a)
  max_idx = 0 		# 리스트 중 0번 위치를 최댓값 위치로 기억
  for i in range(1, n):
    if a[i] > a[max_idx]: # 지금 값이 현재 최댓값보다 크면
      max_idx = i 	# 최댓값 위치 변경
  
  return max_idx

v = [17, 92, 18, 33, 58, 7, 33, 42]
print(find_max_idx(v))
# 결과 : 1

응용 2. 최솟값 찾기

def find_min(a):
  n = len(a)
  min_v = a[0] 	# 리스트의 첫번째 값을 최솟값으로 먼저 저장
  for i in range(1, n): # 1부터 n-1까지 반복
    if a[i] < min_v: 	# 지금 값이 현재 최솟값보다 작으면
      min_v = a[i] 	# 최솟값 변경
  
  return min_v

v = [17, 92, 18, 33, 58, 7, 33, 42]
print(find_min(v)) 
#결과 : : 7
  • 최솟값 위치 찾기
def find_min_idx(a):
  n = len(a)
  min_idx = 0 		# 리스트 중 0번 위치를 최솟값 위치로 기억
  for i in range(1, n):
    if a[i] < a[min_idx]: # 지금 값이 현재 최솟값보다 작으면
      min_idx = i 	# 최솟값 위치 변경
  
  return min_idx

v = [17, 92, 18, 33, 58, 7, 33, 42]
print(find_min_idx(v))
# 결과 : 5

Reference

모두의 알고리즘 with 파이썬, 길벗

profile
찐문과생의 빅데이터 생존기🐣 열심히 할래용 (ง •_•)ง

0개의 댓글