본문 바로가기

분류 전체보기

(54)
(20210125) 8th Morning Challenge 우선순위 정리
exception error handling 1. 기본 exception handling begin x = 1/0 rescue Exception x = 0 puts( $!.class ) puts( $! ) end puts( x ) -------실행결과------- ZeroDivisionError divided by 0 0 $! 는 마지막에 발생한 exception을 뜻한다. 2. exception타입에 따라 다양한 액션을 취할 수 있다. def calc( val1, val2 ) begin result = val1 / val2 rescue TypeError, NoMethodError => e puts( e.class ) puts( e ) puts( "One of the values is not a number!" ) result = nil rescu..
Encapsulation and Information Hiding encapsulation and information hiding class MyClass def initialize return @test = 500 end end ob = MyClass.new p ob.@test # error 위의 코드는 에러가 발생한다. 인스턴스 변수에 직접 접근하려 했기 때문이다. 내부 데이터에 접속하기 위해선 반드시 메소드를 사용해야한다. 이러한 접근방식의 장점 중 하나는 데이터에 대한 통제가 가능하다는 것이다. 예를 들어 보자. class MyClass def initialize(num) return @test = num end def test if @test < 0 val = 0 else val = @test end return val end end num = 500 ob ..
(20210122) 7th Morning Challenge fast campus 「알고리즘 / 기술면접 완전 정복 올인원 패키지 Online」 16. 시간복잡도 2 시간복잡도 포스팅
(자료구조) 해쉬테이블 1. 해쉬테이블 소개 - 엄청난 룩업 속도를 자랑한다. - 다양한 프로그래밍 언어에서 서로 다른 이름으로 불린다. 해시, 맵, 해시맵, 딕셔너리 등이다. - 해쉬테이블의 값 룩업은 평균적으로 O(1)이다. - 원래 해쉬의 뜻은 임의 값을 어떤 고정된 길이의 값으로 변환하는 것을 말한다 - 해쉬함수가 유효하려면 딱 한가지 기준을 충족해야한다. 해쉬 함수는 동일한 문자열을 해쉬 함수에 적용할 때마다 항상 동일한 숫자로 변환해야한다. 2. 해쉬 구조 - Hash Table: 키(Key)에 데이터(Value)를 저장하는 데이터 구조 Key를 통해 바로 데이터를 받아올 수 있으므로, 속도가 획기적으로 빨라짐 파이썬 딕셔너리(Dictionary) 타입이 해쉬 테이블의 예: Key를 가지고 바로 데이터(Value)를..
알고리즘 복잡도 1. 알고리즘 복잡도 계산이 필요한 이유 - 하나의 문제를 푸는 알고리즘은 무수히 많다. 이를 정량적으로 비교할 수 있어야 어떤 알고리즘이 효율적인지 알 수 있다. 이때 사용하는 것이 바로 알고리즘 복잡도 이다. 2. 알고리즘 복잡도 종류 - 시간복잡도 : 알고리즘 실행 속도, 반복문에 가장 큰 영향을 받는다. - 공간복잡도 : 알고리즘이 사용하는 메모리 용량 - 시간복잡도가 가장 많이 쓰인다. 3. 알고리즘 성능 표기법 - Big 0 표기법: O(N) - 입력 n에 따라 결정되는 시간복잡도 함수 - O(1), O(log n), O(n), O(nlog n), O(n2), O(2n), O(n!)등으로 표기함 - O(1) 반복문이 없는 알고리즘. 아래에서는 n이 100이든, 1000이든 무조건 2회만 실행..
(20210120) 6th Morning Challenge 챠콜진센프로젝트 블로그 '데이터 수집 및 저장' 편 작성 완료
(20210119) 5th Morning Challenge 챠콜진센 프로젝트 블로그 작성
(20210118) 4th Morning Challenge fast campus 「알고리즘 / 기술면접 완전 정복 올인원 패키지 Online」 14. 링크드리스트 4 15. 시간복잡도 1
(자료구조) 링크드리스트 (Linked List) 1. 링크드리스트란 - 일반적인 배열이 순차적으로 연결된 공간에 데이터를 나열하는 구조라면, 링크드 리스트(혹은 연결 리스트)는 떨어진 곳에 존재하는 데이터를 포인터로 연결하여 관리하는 데이터 구조이다. - 사용자가 어떤 애플리케이션에서 배열을 사용 중이라면 아마 배열 대신 링크드 리스트를 쓰고 있을 가능성이 크다. 기본구조는 아래와 같다. - Node : 데이터 저장 단위. 실제 데이터값과 포인터로 구성되어있다. 아래 그림 왼쪽이 데이터값, 오른쪽이 포인터이다. - Pointer : 각 노드 안에서 다음이나 이전 노드와의 연결 정보를 가지고 있는 공간이다. 아래 그림에서는 다음 노드의 정보만 들어가나 만약 이전, 다음 노드정보가 들어간다면 이를 더블링크드리스트라 부른다. 1. 아래는 파이썬으로 구현한 ..