전체 글82 [WEEK02] 재귀함수 [Do it 자료구조와 함께 배우는 알고리즘 입문 with 파이썬] + [이것이 취업을 위한 코딩테스트다] 개념정리 재귀함수 (Recursive Function) : 어떤 이벤트에서 자기 자신을 포함 -> 다시 자기 자신을 사용하여 정의 : factorial(n)이 factorial(n-1)을 호출함 => 재귀 호출 : 재귀함수의 수행은 스택 자료구조와 동일함 (함수를 계속해서 호출했을 때 가장 마지막에 호출한 함수가 먼저 수행을 끝내야 그 앞의 함수 호출이 끝남) => 따라서 재귀적으로 함수를 표현할 때는 반드시 if 문을 이용하여 종료조건을 구현해야함 : 재귀 함수를 활용하여 소스코드를 작성하는 것은 수학의 점화식과 유사함 직접재귀와 간접 재귀 직접재귀 : 자기 자신과 똑같은 함수 호출 간접재귀 : .. 2022. 10. 3. [WEEK02] 스택(Stack)과 큐(Queue) + Collections.deque [Do it 자료구조와 함께 배우는 알고리즘 입문 with 파이썬] + [이것이 취업을 위한 코딩테스트다] + [Introduction to Algorithms] 개념 정리 1. 스택 (Stack) : 데이터를 임시 저장할 때 사용하는 자료구조 : 접시 쌓기에 비유할 수 있음 : 후입 선출 (Last In First Out) : 스택 사용시 "별도의 라이브러리를 사용할 필요 없음" => 기존 리스트로 사용하면 됨 : 스택에 데이터를 넣는 작업을 푸시(push) / 데이터를 꺼내는 작업은 팝(pop) : append() : 리스트 가장 뒤쪽에 데이터를 삽입 : pop() : 리스트 가장 뒤쪽에서 데이터를 꺼냄 : 윗부분 - top / 아랫부분 - bottom 용어정리 stk : 스택배열 (list형 배열).. 2022. 10. 1. [Week02] 분할정복 (Divide & Conquer) 분할정복? : 문제를 더 이상 나눌 수 없을 때까지 나눈 후 각각 풀고 그 후 다시 합병하여 문제의 답을 얻는 알고리즘 설계요령 1) Divide : 문제의 분할이 가능할 시, 2개 이상의 문제로 나눔 2) Conquer : 나누어진 문제를 해결 3) Combine : Conquer한 문제들을 결합 대표적인 예 : 병합정렬, 거듭제곱, 피보나치 수열 등 Base Case & Recursive Case 1) Base Case : 더 이상 divide 할 수 없는 상태 2) Recursive Case : 문제들을 나눠야 하는 상황 출처 https://namu.wiki/w/%EB%B6%84%ED%95%A0%20%EC%A0%95%EB%B3%B5%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%9.. 2022. 10. 1. [WEEK01] 예외처리 [점프투파이썬] 개념 정리 오류의 예 : FileNotFoundError : ZeroDivisionError 예외처리 기법 # 기본 구조 try: ... except [발생오류 [as 오류메시지 변수]] # [ ] 기호는 괄호 안의 내용을 생략할 수 있다는 관례적인 표현 1) try ~ except : : 오류 종류에 상관없이 오류 발생시 except 블록을 수행 2) try ~ except 발생오류 : : except 문에 미리 정해놓은 오류 이름과 일치할 때만 except 블록 수행 3) try ~ except 발생오류 as 오류메시지 변수: : 2)에서 오류 메시지 내용까지 알고 싶을때 그 외 예외처리 기법 1) try ~ finally : : finally절은 try문을 수행도중 예외 발생여부에 .. 2022. 9. 26. [WEEK01] 클래스 [점프투파이썬] 개념 정리 클래스에 구현된 함수 = method (메서드) 클래스로 만든 객체의 객체변수는 다른 객체의 객체변수에 상관없이 독립적인 값을 유지 a = FourCal() b = FourCal() a.setdata(4, 2) b.setdata(3, 7) 생성자 : 객체가 생성될때 자동으로 호출되는 메서드 (초기값 설정가능) def __init__(self, first, second): self.first = first self.second = second 상속 : 어떤 클래스를 만들 때 다른 클래스 기능을 물려받을 수 있게 만드는 것 : 클래스 상속을 위해서는 클래스 이름 뒤에 상속할 클래스 이름을 넣어주면 됨 : class 클래스이름(상속할 클래스 이름) why? 기존 클래스에 함수나 클래.. 2022. 9. 26. [WEEK01] 복잡도 & 점근법 복잡도 (complexity) 점근적 표기 알고리즘의 수행시간을 표기하기 위해, 필수적인 부분에 집중하고 불필요한 상세들은 무시 점근적 표기법 종류 O-표기 : 상한 표기법 : 점근적 상한만 알고 있을 때 사용하는 표기법 ⇒ 최악의 경우에도 이 기준을 넘지 않음 : 임의의 n값에 대해 크기 n인 특정 입력이 선택되더라도 수행시간이 O(n^2)임을 뜻함 : 최악의 경우 수행시간이 O(n^2)이라는 뜻 : n의 오더 또는 오더 n : O는 order의 머리글자 (initial) 세타표기 : 점근적으로 어떤 함수의 위와 아래를 한계지음 오메가 표기 : 점근적 하한만 알고 있을 때 사용하는 표기법 ⇒ 아무리 빨라도 이 기준보다 빠를 수 없음 시간복잡도(time complexity) : 실행하는데 필요한 시간 평.. 2022. 9. 26. 이전 1 ··· 6 7 8 9 10 11 12 ··· 14 다음