알고리즘 문제를 풀어봤다.
input이라는 리스트안의 숫자 중 가장 큰 숫자를 출력하는 방법이다.
input = [3, 5, 6, 1, 2, 4]
def find_max_num(array):
for num in array:
for is_num in array:
if num < is_num:
break
else:
return num
result = find_max_num(input)
print(result)
def find_max_num1(array):
max_num = array[0]
for num in array:
if num > max_num:
max_num = num
return max_num
result = find_max_num1(input)
print(result)
print문의 문장 속 알파벳이 몇 번 나오는지 찾는 문제이다.
def find_alphabet_occurrence_array(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
return alphabet_occurrence_array
print(find_alphabet_occurrence_array("hello my name is sparta"))
이같은 문제를 기초라고 첫 강의에 나오는데서 충격을 받았다.
생각보다 어려웠고, 처음 접하는 나로서는 감도 못 잡겠다.
문제만 주어졌을 때는 문제가 의도하는 바가 무엇인지조차 찾기 어려웠다.
강의에 나왔던 문제라도 반복해서 풀어보고 이해를 해나가야겠다.
시간복잡도,공간복잡도,점근표기법에 대해서도 배웠는데 시간복잡도는 코드가 돌면 얼만큼의 시간이 걸릴 것인지를 대략 산출하는 것이었고, 공간복잡도는 코드가 돌아가면서 컴퓨터상의 공간을 얼마나 사용하는지 측정한 것이고, 점근표기법은 최악의 경우를 기준으로 잡고 계산하는 빅오, 최상의 경우를 기준으로 계산하는 오메가 방법이 있다.
보통 공간복잡도보다 시간복잡도를 더 우선시하고, 빅오 표기법을 많이 사용한다.
'TIL' 카테고리의 다른 글
19_Step : 이진탐색 & 재귀함수 (0) | 2021.10.22 |
---|---|
18_Step : Array와 LinkedList (0) | 2021.10.21 |
16_Step : AWS S3 활용 (0) | 2021.10.19 |
15_Step : jwt 로그인 & pymongo error (0) | 2021.10.13 |
13_Step : ec2 & filezilla & gabia domain AND ssh 오류 해결! (0) | 2021.10.06 |