알고리즘 - 최대값 찾기

고정원·2021년 3월 8일
0

살려줘알고리즘

목록 보기
5/7

시간복잡도

입력값과 문제를 해결하는데 걸리는 시간과의 상관관계
→ 입력값(함수에서 크기가 변경될 수 있는 값)이 2배로 늘어났을때, 문제를 해결하는데 걸리는 시간은 몇배로?

공간복잡도

입력값과 문제를 해결하는데 걸리는 공간과의 상관관계
→ 입력값이 2배로 늘어났을때 저장하는 데이터의 양이 얼마나 클까?

거의 별 차이 없음 그래봤자 데이터 상수값들이므로

📌알고리즘 성능에는 시간복잡도가 공간복잡도보다 큰 영향을 미친다!

for문을 이해했다... 드디어...!

방법1) 각 숫자마다 모두 다른 숫자와 비교해서 찾기, 만약 다른 모든 값 보다 크다면 반복문 중단!
🕘시간복잡도 : n2
: 반복연산(for문) * 반복연산(for문)

input = [3, 5, 6, 1, 2, 4]

def find_max_num(array):
    for i in array: #array에 있는 각 숫자를 i에 넣어 그래야 비교하지 
        for compare_num in array: #그리고 i랑 비교할 값들도 있어야 비교하지
            if i < compare_num:
                break
        # 파이썬에서 for문이 다 실행 될때까지 break가 한 번도 실행되지 않았다면, else실행! 
        else:
            return i
            

result = find_max_num(input)
print(result)
  1. 비교할 값을 변수에 지정해줌
    🕘시간복잡도 : 2N + 1
    : 대입연산(=) + 반복연산(for문) + 비교연산(<)
input = [3, 5, 6, 1, 2, 4]

def find_max_num(array):
    #지정변수
    max_num = array[0] #왜 0번째? 배열의 임의의 숫자를 어차피 비교하면서 갈거라서 초기값을 설정해주는 것임 
    for i in array:
        if i > max_num:
            max_num = i

    return max_num 

result = find_max_num(input)
print(result)
profile
해결문제에 대해 즐겁게 대화 할 수 있는 프론트엔드 개발자

0개의 댓글