[알고리즘] 최대값, 최소값 구하기
1. 파이썬 내장함수 사용하기
간단하게 파이썬의 내장함수를 사용해서 최대값을 구할 수 있다.
이때의 시간복잡도는 O(n)이다.
#리스트 형태
arr = [5, 3, 7, 9, 2, 5, 2, 6]
arrMax = max(arr) #최대값
arrMin = min(arr) #최소값
print(arrMax)
print(arrMin)
>> 9
2
#정수형 제공
iMax = max(5, 3, 7, 9, 2, 5, 2, 6) #최대값
iMin = min(5, 3, 7, 9, 2, 5, 2, 6) #최소값
print(iMax)
print(iMin)
>> 9
2
#문자형 제공
sMax = max('Korea')
sMin = min('Korea')
ssMin = min('korea')
print(sMax)
print(sMin)
print(ssMin)
>> r
K
a
* 숫자와 문자가 섞여있는 경우는 서로를 비교할 수 없기 때문에 최대값/최소값을 구할 수 없다.
* 반복이 가능한 타입(iterable)의 자료형이 주어지면 내장함수로 최대값/최소값을 구할 수 있다.
예) 리스트, 문자열, 튜플 등
* 문자열의 대소비교를 진행할 때 대문자와 소문자를 분리하는 것을 알 수 있다.
예) 대문자 K < 소문자 a
이는 아스키 코드 숫자에 의해 판별하기 때문이다.
아스키코드에 의하면 대문자 A는 65이고 소문자 a는 97이다.
2. 정렬해서 값 추출하기 (리스트)
리스트 자료형의 경우 내장함수에 있는 정렬을 이용해서 최대값/최소값을 구할 수 있다.
이때, sort의 경우 시간복잡도가 O(n log n)이므로 내장함수 최대값, 최소값을 구하는 것보다는 시간이 느리다.
arr = [5, 3, 7, 9, 2, 5, 2, 6]
arr.sort()
print(arr[-1]) #최대값
print(arr[0]) #최소값
>> 9
2
arr.sort(reverse=True)
print(arr[0]) #최대값
print(arr[-1]) #최소값
>> 9
2
s = ['K', 'O', 'R', 'E', 'A']
s.sort()
print(s[-1]) #최대값
print(s[0]) #최소값
>> K
A
* 리스트의 제일 앞에 있는 값은 인덱스가 0번이고, 가장 마지막에 있는 값은 인덱스가 -1임을 이용한다.
* 리스트.sort() : 리스트의 값을 오름차순으로 정렬한다. (작은 값부터 큰 값으로 정렬)
* 리스트.sort(reverse=True) : 리스트의 값을 내림차순으로 정렬한다. (큰 값부터 작은 값으로 정렬)
3. 값 비교하기
리스트 자료형의 값을 임의의 변수와 처음부터 끝까지 비교해서 최대값/최소값을 구한다.
arr = [5, 3, 7, 9, 2, 5, 2, 6]
arrMax = arr[0]
arrMin = 2147000000
for i in range(len(arr)):
if arr[i] > arrMax: #최대값
arrMax = arr[i]
if arr[i] < arrMin: #최소값
arrMin = arr[i]
print(arrMax)
print(arrMin)
>> 9
2
* 임의의 변수는 리스트의 첫번째 값으로 설정해도 되고,
정수형 중 가장 큰 값인 2147000000 또는 가장 작은 값인 -2147000000으로 설정해서 값을 찾아도 된다.