주어진 숫자 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
리스트에 숫자가 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
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
모두의 알고리즘 with 파이썬, 길벗