시간 복잡도

QA - Test - Errer·2022년 11월 10일
0

TIL

목록 보기
12/52
post-thumbnail

입력값이 2배로 늘어나면!

당현히 시간도 2배로 늘어난다 그러니 시간을 단축시기키위해 좋은 알고리즘을 알아야한다!

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


def find_max_num(array):
    for num in array:
        for compare_num in array:
            if num < compare_num:
                break
        else:
            return num


result = find_max_num(input)
print("정답 = 6 / 현재 풀이 값 = ", find_max_num([3, 5, 6, 1, 2, 4]))
print("정답 = 6 / 현재 풀이 값 = ", find_max_num([6, 6, 6]))
print("정답 = 1888 / 현재 풀이 값 = ", find_max_num([6, 9, 2, 7, 1888]))

이 함수가 시간이 얼마나 걸릴까 생각을 해보았는가?

사실 코드를 작성하면서도 이 코드들이 실행하는 시간을 분석하는 사람은 몇몇 없을꺼같다(나는 그렇다)
하지만 나는 좋은 개발자가 되고싶다. 그러면 좋은 코드를 적고 효율이 좋은 개발을 해야한다.

그럼 일단 이 코드들이 한줄식 실행되는것이 1번의 연산이라고 생각하자!

공간 복잡도

시간이 늘어나면 공간도 늘어나는건 당연하다.

시간 = 공간

똑같이 공간이 많이 안늘어나게 코딩하고 알고리즘을 짜는게 좋은 코딩이다!

def find_max_occurred_alphabet(string):
    alphabet_array = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "x", "y", "z"]
    max_occurrence = 0
    max_alphabet = alphabet_array[0]

    for alphabet in alphabet_array:
        occurrence = 0
        for char in string:
            if char == alphabet:
                occurrence += 1

        if occurrence > max_occurrence:
            max_alphabet = alphabet
            max_occurrence = occurrence

    return max_alphabet

result = find_max_occurred_alphabet
print("정답 = a 현재 풀이 값 =", result("Hello my name is sparta"))
print("정답 = a 현재 풀이 값 =", result("Sparta coding club"))
print("정답 = s 현재 풀이 값 =", result("best of best sparta"))
  1. 이 해결 방법은 각 알파벳마다 문자열을 돌면서 몇 글자 나왔는지 확인!

  2. 그 보다 크면 값을 저장한뒤 가장 큰 알파벳을 저장!

  1. alphabet_array 의 길이 = 26
  2. max_occurrence, max_alphabet, occurrence 변수 = 3

이를 더해보면 = 29 라는 값 이나온다

profile
https://dirt-shoe-59d.notion.site/QA-Engineer-a021ababa8b44cb780000fc01eca2a8e

3개의 댓글

comment-user-thumbnail
2022년 11월 11일

사진은 직접 찍으신건가요? ㅎㅎ

1개의 답글