알고리즘 25

점근 표기법

[점근 표기법이란?] 알고리즘의 성능을 수학적으로 표기하는 방법. "효율성"을 평가하는 방법 어떤 함수의 증가 양상을 다른 함수와의 비교로 표현하는 수론과 해석학의 방법 지금까지 "~시간과 공간이 걸리겠구나" 하면서 따졌던 것들이 점근표기법의 일종임 [점근 표기법의 종류] 1. 빅오(BIg-O) 표기법 최악의 성능이 나올 때 어느 정도의 연산량이 걸릴 것인지에 대해 표기 표기 방법 예시: O(N) 2. 빅 오메가(Big-Ω) 표기법 최선의 성능이 나올 때 어느 정도의 연산량이 걸릴 것인지에 대해 표기 표기 방법 예시: Ω(1) [배열에서 특정 요소 찾기] 다음과 같은 숫자로 이루어진 배열이 있을 때, 이 배열 내에 특정 숫자가 존재한다면 True, 존재하지 않다면 False를 반환하시오. [3, 5, 6..

알고리즘 2021.08.15

공간 복잡도 판단하기

[공간 복잡도란?] 입력값과 문제를 해결하는 데 걸리는 공간과의 상관관계 (공간은 변수나 배열 등 값을 담을 때 쓰이는 것들을 말함) "우리는 공간이 적게 걸리는 알고리즘을 좋아하니 입력값이 늘어나도 걸리는 공간이 덜 늘어나는 알고리즘이 좋은 알고리즘이겠죠?" [최빈값 찾기 알고리즘의 공간 복잡도 판단해보기] 방법1) 각 알파벳마다 문자열들을 돌면서 몇 글자가 나왔는 지 확인 만약 그 숫자가 저장한 알파벳 빈도 수보다 크면, 그 값을 저장하고 제일 큰 알파벳으로 저장. def find_max_occurred_alphabet(string): # alphabet_array: 26 개의 공간을 사용합니다 alphabet_array = ["a", "b", "c", "d", "e", "f", "g", "h", "..

알고리즘 2021.08.13

시간 복잡도 판단하기

[시간 복잡도란?] 입력값과 문제를 해결하는 데 걸리는 시간과의 상관관계 (입력값이 증가할 때 걸리는 시간은 얼마나 증가하는 지 판단하는 것 입력값이 많아졌을 때 데이터를 처리하는 데 오래걸리면 효율이 좋지 않은 코드라는 것이므로 입력값이 많을 때 시간이 비교적 오래 걸리지 않으면 좋은 코드) [최댓값 찾기 알고리즘의 시간 복잡도 판단해보기] 방법 1) 각 숫자마다 모든 다른 숫자와 비교해서 최대값인지 확인 만약 다른 모든 값보다 크다면 반복문을 중단 input = [3, 5, 6, 1, 2, 4] def find_max_num(array): for num in array: # array 의 길이만큼 아래 연산이 실행 for compare_num in array: # array 의 길이만큼 아래 연산이 ..

알고리즘 2021.08.11

알고리즘과 친해지기 - 최빈값 찾기

문제 설명) 다음과 같은 문자열을 입력받았을 때, 어떤 알파벳이 가장 많이 포함되어 있는지 반환하시오 "hello my name is sparta" 힌트) 1) str.isalpha() : 문자가 알파벳인지 아닌지 반환하는 함수. return True or False print("a".isalpha()) # True print("1".isalpha()) # False s = "abcdefg" print(s[0].isalpha()) # True 2) 알파벳 별로 빈도수를 리스트에 저장하기 길이가 26이고 0으로 초기화된 배열을 선언한 후, 이 배열의 각 원소에 알파벳마다 빈도수를 추가 ex) 알파벳을 순서대로 나열했을 때 a는 첫번째로 등장함 컴퓨터언어에서는 시작이 1이아닌 0이기 때문에 a의 위치는 0 ..

알고리즘 2021.08.10

알고리즘과 친해지기 - 최대값 찾기

[알고리즘이란?] 어떤 문제의 해결을 위하여, 입력된 자료를 토대로 하여 원하는 출력을 유도하여 내는 규칙의 집합. 여러 단계의 유한 집합으로 구성되는데, 각 단계는 하나 또는 그 이상의 연산을 필요로 한다. [표준국어대사전] -> 어떤 문제가 있을 때, 그것을 해결하기 위한 여러 동작들의 모임 하나의 문제를 풀기 위해서는 다양한 방법이 있을 수 있다 [최댓값 찾기] 다음과 같이 숫자로 이루어진 배열이 있을 때, 이 배열 내에서 가장 큰 수를 반환하시오. 방법 1) 각 숫자마다 모든 다른 숫자와 비교해서 최대값인지 확인한다. 만약 다른 모든 값보다 크면 반복문을 중단한다. ex) [3, 5, 6, 1, 2, 4] 3 VS 3, 5, 6, 1, 2, 4 -> 3 vs 3, 3 vs 5, 3 vs 6, ....

알고리즘 2021.08.09