안녕하세요. 쏘피입니다. 오늘은 02. 최댓값 찾기 문제를 풀어보겠습니다.

문제: 최댓값을 구하시오
1, 9, 8, 100, 50
잠깐! 문제를 풀기 앞서 파이썬 기초
1) 리스트 할당
2) 자료 위치
3) 리스트 길이
# 1) 리스트 할당 a = [1, 9, 8, 100, 50]
#2) 자료 위치
#3) 리스트 길이 |
풀이:
1) 입력: 숫자가 n개 들어있는 리스트
2) 출력: 숫자 n개 중 최댓값
3) 계산 알고리즘:
[1] 첫 번째 숫자를 최대값으로 기억
[2] 첫 번째 숫자와 두 번쨰 숫자를 비교하고 최댓값을 바꿔 기억
.....
[N] 마지막으로 기억된 숫자가 최댓값
4) 파이썬으로 구현:
# 최댓값 구하기 # 입력: 숫자가 n개 들어있는 리스트 # 출력: 숫자 n개 중 최댓값 def find_max(a): n = len(a) max_v = a[0] for i in range(1, n): if a[i] > max_v: max_v = a[i] return max_v v = [1, 9, 8, 100, 50] print(find_max(v)) |
알고리즘 분석
두 값 중 어느 것이 더 큰지를 판단하는 비교가 이 알고리즘에서의 계산
n개 이므로 비교는 n-1 번 진행 해야 함.
그렇다면 빅오는? => O(n): 입력 크기와 계산 시간이 비례
추가 문제: 리스트에 숫자 n개가 있을때 가장 큰 값이 있는
위치 번호를 돌려주는 알고리즘을 만들어보시오
#입력: 숫자 N개 리스트 # 출력: 숫자 N개 중에서 최댓값이 있는 위치(0부터 n-1까지)
def find_max_plc(a): |
추가 연습문제
2-1 숫자 n개를 리스트로 입력받아 최솟값을 구하는 프로그램을 만들어보세요.
추가 연습문제 풀이
# 2-1 숫자 n개를 리스트로 입력받아 최솟값을 구하는 프로그램을 만들어보세요. def find_min(a): n = len(a) min_v = a[0] for i in range(1, n): if a[i] < min_v: min_v = a[i] return min_v v = [1, 9, 8, 100, 50] print(find_min(v)) |
문제 출처: 모두의 알고리즘 with 파이썬
챕터 2라서 그런지 아직까진 쉽네요!
꾸준히 문제 18까지 가보겠습니다.
그리고 책에 나와있는 파이썬 기본 문법도
정리해서 포스팅 해보겠습니다!
'DATA TOOL > ALGORITHM(알고리즘)' 카테고리의 다른 글
[알고리즘:파이썬] 04. 팩토리얼 구하기(재귀호출) (0) | 2020.01.30 |
---|---|
[알고리즘:파이썬] 03. 동명이인 찾기 (0) | 2020.01.26 |
[알고리즘:파이썬] 01. 1부터 n까지의 합 구하기 (0) | 2020.01.24 |
[컴퓨팅 사고: 알고리즘] 알고리즘 공부를 시작한 이유(feat. 데이터분석 ) (0) | 2020.01.24 |