자료구조 - 시간 복잡도 / 스택, 큐, 이중 연결 리스트
·
CS
시간 복잡도시간 복잡도란 입력 크기에 대해 어떠한 알고리즘이 실행되는 데 걸리는 시간입니다.로직의 반복 횟수를 중점으로 측정되고, 보통 빅오 표기법으로 나타냅니다.for (int i = 0; i 가령 위 코드와 같이 로직이 짜여져 있다고 가정해 보겠습니다.시간 복잡도는 10회 반복로직 안에 n회 반복 로직이 총 두개 즉 10 * n * n 으로 계산할 수 있습니다.그리고 두번째 로직에서는 n회 반복이므로 총 두개를 합치면 10n^2 + n으로 계산할 수 있습니다. 빅오 표기법빅오 표기법이란 입력 범위 n을 기준으로 해서 로직이 몇 번 반복되는지 나타내는 것입니다.위에서 말한 코드의 시간 복잡도를 빅오 표기법으로 나타낸다면 O(n^2)이 됩니다. 그럼 여기서 의문점이 생길 수 있다고 생각합니다."왜 O(n..
디자인 패턴(2)
·
CS
이터레이터 패턴- 이터레이터를 사용하여 컬렉션의 요소들에 접근하는 디자인 패턴이다.- 이터레이터라는 하나의 인터페이스로 순회가 가능하다. ex) javascript로 바라본 이터레이터 패턴: set과 map은 다른 자료구조임에도 for a of b라는 이터레이터 프로토콜을 통해 순회가 가능하다.const mp = new Map()mp.set('a', 1)mp.set('b', 2)mp.set('c', 3)const st = new Set()st.add(1)st.add(2)st.add(3)for (let a of mp) console.log(a)for (let a of st) console.log(a)노출모듈 패턴- 즉시 실행 함수를 통해 private, public 같은 접근 제어자를 만드는 패턴이다.- ..
디자인 패턴(1)
·
CS
디자인 패턴프로그램을 설계할 때 발생했던 문제들을 객체 간의 상호 관계 등을 이용하여 해결 가능하게 하나의 "규약" 형태로 만든 것이다.싱글톤 패턴하나의 Class는 오직 하나의 인스턴스만 가지는 걸 말한다.주로 DB에 많이 사용된다. 장점비용이 절감된다.단점의존성이 높다.단위테스트에서 단점이 드러난다.독립적인 인스턴스 생성에 어려움이 있다.의존성 주입싱글톤 패턴의 단점 중 하나인 결합을 강하게 만드는 부분을 완화하기 위한 과정이다.디커플링 된다고 표현되기도 한다.의존성 주입 장점testing과 migration이 수월해진다 -> module을 쉽게 교체할 수 있는 구조이기 때문이다.application 의존성 방향이 일관된다.application을 쉽게 추론 가능하다.module간 관계가 명확해진다.의..