이것저것 기록

[알고리즘] 최댓값, 최댓값 위치를 찾는 알고리즘 본문

코린이/코딩 기초 & 알고리즘 공부

[알고리즘] 최댓값, 최댓값 위치를 찾는 알고리즘

anweh 2021. 6. 13. 16:56

* <모두의 알고리즘 with 파이썬>의 문제 02를 정리한 내용입니다.

 

 

1. 최댓값을 찾는 알고리즘 

1.1 실행 순서 

  • 리스트의 첫 번째 숫자를 최댓값으로 기억한다.
  • 두 번째의 숫자와 첫 번째 숫자를 비교한다.
  • 두 번째 숫자가 첫 번째 숫자보다 크다면, 두 번째 숫자를 최댓값으로 바꿔 기억한다. 
  • 세 번째 숫자 ~ 마지막 숫자까지 위를 반복한다. 
  • 마지막으로 기억된 숫자가 주어진 숫자 중 최댓값이다.

1.2 예제 코드 (최댓값 찾기)

import random 

# 리스트 생성 (총 길이 100, 0~300사이의 랜덤 int로 구성)
temp_list = [random.randint(0,300) for i in range(100)]

def find_max(temp_list):     
    max_num = temp_list[0]          # 입력 리스트의 첫 번째 값을 최댓값으로 기억
    n = len(temp_list)              # 입력 크기 n
    for i in range(1, n):           # 1~(n-1)까지 반복 
        if temp_list[i] > max_num:  # 입력 리스트의 i 번째 값이 현재 최댓값보다 크면
            max_num = temp_list[i]  # 업데이트 
    return max_num
    
a = find_max(temp_list)
print(a)

 

 

2. 최댓값 위치를 찾는 알고리즘 

2.1 실행 순서

  • 리스트의 첫 번째 숫자를 최댓값으로 기억하고, 최댓값의 위치(인덱스)를 저장한다. 
  • 두 번째의 숫자와 첫 번째 숫자를 비교한다.
  • 두 번째 숫자가 첫 번째 숫자보다 크다면, 두 번째 숫자의 위치(인덱스)를 저장한다.
  • 세 번째 숫자 ~ 마지막 숫자까지 위를 반복한다. 
  • 마지막으로 위치(인덱스)를 반환한다. 

2.2 예제 코드 (최댓값 위치 찾기)

 

import random 

temp_list = [random.randint(0,300) for i in range(100)]

def find_max(temp_list):     
    max_idx = 0                                # 0번째 인덱스를 최댓값의 위치로 설정
    n = len(temp_list)                         # 입력 리스트의 크기만큼 반복
    for i in range(1, n):
        if temp_list[i] > temp_list[max_idx]:
            max_idx = i          
    return max_idx


a = find_max(temp_list)
print(a)
Comments