-
728x90
최댓값, 최솟값 찾기
의사코드(pseudocode)로 알고리즘을 설계해보면 다음과 같이 생각해볼 수 있다.
(17, 92, 18, 33, 58, 7, 33, 42 중에서 찾는다고 가정)
- 첫 번째 숫자 17을 최댓값으로 기억
- 두 번째 숫자 92를 현재 최댓값과 비교하고, 비교했을 때 92가 더 크므로 더 큰 수(92)를 저장
- 세 번째 숫자 18을 현재 최댓값 92와 비교, 더 작으므로 그냥 지나감
- 네 번째 숫자부터 일곱 번째 숫자까지 같은 과정을 반복
- 마지막 숫자 42를 현재 최대값인 92와 비교, 42가 더 작으므로 지나감
- 결국 92가 주어진 숫자 중 최대 값
최댓값 찾기
def find_max(a): # 입력크기 n n = len(a) # 리스트의 첫 번째 값을 최대값으로 기억 max_v = a[0] # 1부터 n-1까지 반복 for i in range(1, n): # 이번 값이 현재까지 기억된 최대값보다 크면 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
최솟값 찾기
def find_min(a): # 입력 크기 n n = len(a) # 리스트 중 첫 번째 값을 일단 최솟값으로 기억 min_v = a[0] # 1부터 n-1까지 반복 for i in range(1, n): # 이번 값이 현재까지 기억된 최솟값보다 작으면 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_max_idx(a): # 입력크기 n n = len(a) # 리스트 중 0번 위치를 최대값 위치로 기억 max_idx = 0 # 1부터 n-1까지 반복 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
Reference
728x90'Developer > Algorithm' 카테고리의 다른 글
1부터 n까지 제곱의 합 (0) 2021.07.06 1부터 n까지 연속한 숫자의 합 (0) 2021.07.06 절대값 구하기 (0) 2021.07.06 댓글