엄코딩(71)
-
Python 53 - 큰 수의 법칙( 알고리즘 )
'큰 수의 법칙' 은 일반적으로 통계 분야에서 다루어지는 내용이지만 글쓴이는 본인만의 방식으로 다르게 사용하고 있다. 글쓴이의 큰 수의 법칙은 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰 수를 만드는 법칙이다. 단, 배열의 특정한 인덱스(번호)에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다. 예를 들어 순서대로 2, 4, 5, 4, 6 으로 이루어진 배열이 있을 때 M이 8이고, K가 3이라고 가정하자. 이 경우 특정한 인덱스의 수가 연속해서 세번까지만 더해질 수 있으므로 큰 수의 법칙에 따른 결과는 6 + 6 + 6 + 5 + 6 + 6 + 6 + 5 인 46이 된다. 단, 서로 다른 인덱스에 해당하는 수가 같은 경우에도 서로 다른 것으로..
2021.06.14 -
Python 52 - 당장 좋은 것만 선택하는 그리디 ( 알고리즘 )
그리디(Greedy) 알고리즘은 단순하지만 강력한 문제 해결 방법이다. 이 알고리즘 유형은 국내 알고리즘 교재에서 단어그대로 번역하여 '탐욕법' 으로 소개된다. 이름에서 알 수 있듯이 어떠한 문제가 있을 때 단순 무식하게, 탐욕적으로 문제를 푸는 알고리즘이다. 여기서 탐욕적이라는 말은 '현재 상황에서 지금 당장 좋은 것만 고르는 방법'을 의미한다. 그리디 알고리즘을 이용하면 매 순간 가장 좋아보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다. 그리디 알고리즘 유형의 문제는 매우 다양하기 때문에 암기한다고 해서 항상 잘 풀 수 있는 알고리즘 유형이 아니다. 사전 지식 없이도 풀 수 있는 문제 도 있겠지만, 많은 유형을 접해보고 문제를 풀어보며 훈련해야 한다. 그리디 알고리즘..
2021.06.13 -
Python 51 - 시간복잡도, 공간복잡도, 빅오표기법 ( 알고리즘 공부 )
목차 1. 시간복잡도 2. 공간복잡도 3. 시간과 메모리 측정 개요 복잡도는 알고리즘의 성능을 나타내는 척도이다. 복잡도는 시간 복잡도와 공간 복잡도로 나눌 수 있다. 쉽게 말하면 시간 복잡도는 특정한 크기의 입력에 대하여 알고리즘이 얼마나 오래 걸리는지를 의미하고, 공간 복잡도는 특정한 크기의 입력에 대하여 알고리즘이 얼마나 많은 메모리를 차지하는지를 의미한다. 복잡도를 측정함으로써 다음과 같은 2가지를 계산할 수 있다. 시간 복잡도 : 알고리즘을 위해 필요한 연산의 횟수 공간 복잡도 : 알고리즘을 위해 필요한 메모리의 양 1. 시간 복잡도 알고리즘 문제를 풀 때 단순히 ‘복잡도’라고 하면 보통은 시간 복잡도를 의미한다. 시간 복잡도를 표현할 때는 빅오 표기법을 사용한다. 빅오 표기법을 간단히 정의하자..
2021.06.12 -
Python 50 - 재귀 호출 / 스택(stack) / 유클리드 호제법
재귀 호출 1. 자기 자신을 다시 호출하는 기능 2. 함수 안에서 자신의 함수를 호출하는 기능 3. 반복문 + stack 구조 (뒤로가기, undo, ctrl+z) def sum(n): if n == 0: return 0 return sum(n-1)+n # sum(n-1)에 대한 값은 모르니까 stack에 쌓아놓는다. print(sum(5)) 출력값 : 15 돌아가는 방식(stack이 쌓이는 모습) print(sum(1)) -----> 1 1이 아래로 넘어감 print(sum(2)) -----> 1 + 2 3이 아래로 넘어감 print(sum(3)) -----> 3 + 3 6이 아래로 넘어감 print(sum(4)) -----> 6 + 4 10이 아래로 넘어감 print(sum(5)) -----> 10 ..
2021.06.11 -
Python 48 - 조건문 제어문 _ for 반복문
for문 for 변수 in (리스트 , 튜플 , 문자열 가능) : 수행해야할 문장 for문 연습하기 dessert = ['초콜릿','쿠키','마시멜로','푸딩','껌'] for i in dessert : print(dessert) --출력값-- ['초콜릿', '쿠키', '마시멜로', '푸딩', '껌'] ['초콜릿', '쿠키', '마시멜로', '푸딩', '껌'] ['초콜릿', '쿠키', '마시멜로', '푸딩', '껌'] ['초콜릿', '쿠키', '마시멜로', '푸딩', '껌'] ['초콜릿', '쿠키', '마시멜로', '푸딩', '껌'] 리스트안에 있는 값이 여러개이면 각각의 변수를 따로 만들어야 한다. : a = [('사과','잼'),('딸기','시럽'),('호두','과자')] print(type(a)) ..
2021.06.09 -
Python 47 - 조건문 제어문 _ while문
while문 : 조건이 True인 동안에 반복을 수행한다. while 조건문 : 수행할 문장 while 조건문 : 수행할 문장 if 조건문 : break while문 연습하기 i = 0 while i
2021.06.08