시간복잡도와 공간복잡도.

shong1332·2021년 6월 17일
0

프로토타입

목록 보기
3/3

input = [a,f,d,j,f,s,a,d,a,f,s,a,f]

라는 인풋이 있고

d와 j를 제외한 a,f,s는 중복이 발생하였다.
이때, 중복이 되지 않은 첫번째 알파벳을 출력하고자 한다.

나는 생각했다.

  1. 0번째 a로 한번 array 한번 쫙 돌리고

  2. 만약 같은 값이 있으면 다음 번째(f)로 한번 돌리고 돌리고

  3. 중복 값이 없는 알파벳이 있다면 break.

    이러면 끝날것을 인터넷 강의에서는

def find_not_repeating_first_character(string):
    alphabet_occurrence_array = [0] * 26

    for char in string:
        if not char.isalpha():
            continue
        arr_index = ord(char) - ord("a")
        alphabet_occurrence_array[arr_index] += 1

    not_repeating_character_array = []
    for index in range(len(alphabet_occurrence_array)):
        alphabet_occurrence = alphabet_occurrence_array[index]

        if alphabet_occurrence == 1:
            not_repeating_character_array.append(chr(index + ord("a")))

    for char in string:
        if char in not_repeating_character_array:
            return char

    return "_"

input 의 모든 알파벳을 뭐어쩌고 저쩌고 딱보기도 어렵게 array에 다 넣어서 그중 한번만 나온 알파벳을 추린다음 그중 ord값이 제일 작은 알파벳을 어쩌고 저쩌고 이러길래

'와 어렵게도 푸네...'

하며 수업을 듣던 중간 나는 스페이스 키를 누르고 시간 복잡도에 대한 생각을 해보았다.

'하긴.. n^2의 일을 하는것 보단 n번 일하는게 맞지...'

사람생각과 컴퓨터의 생각이 참 다르다는걸 느낀 수업이였다. ...

어렵군..

profile
히히히

0개의 댓글