반응형

분류 전체보기 141

[Data Structure] Hash Table

해시 테이블(Hash Table) 해시 테이블은 key-value형태로 데이터를 저장하는 자료구조로, 일반적인 경우 O(1)의 시간복잡도로 값을 탐색할 수 있다. 1. Direct Access Table 우리가 저장할 key-value 쌍들이 있을 때 key값 중 가장 큰 숫자만큼의 배열을 생성한 뒤 해당 인덱스에 value를 저장하면, value에 접근하고 싶을 때 key를 통해 바로 접근할 수 있으므로 O(n)의 시간복잡도를 가진다. 이를 Direct Access Table이라고 한다. data = [(57, "고영희"), (208, "강아지"), (900, "고릴라")] max_index = 0 for key, value in data: if key > max_index: max_index = ke..

[ADsP] 데이터의 이해 Section 02. 데이터의 가치와 미래

1. 빅데이터의 이해 01. 빅데이터의 이해 가. 빅데이터의 정의 특징 설명 3V 양 (Volume) - 데이터의 크기 - 생성되는 모든 데이터를 수집 다양성 (Variety) - 데이터의 다양성 - 정형화된 데이터를 넘어 텍스트, 오디오, 비디오와 같은 모든 유형의 데이터를 분석 대상으로 함 속도 (Velocity) - 데이터의 수집과 처리의 속도 4V 가치 (Value) - 빅데이터를 활용해 유용한 가치를 끌어낼 수 있음 5V 신뢰성 (Veracity) - 방대한 양의 데이터에서 오류 제거를 통해 데이터 품질 및 신뢰성 재고 필요 7V 정확성 (Validity) - 아무리 규모가 큰 데이터라도 질 높은 분석을 통한 데이터 타당성이 중요 휘발성 (Volatility) - 데이터가 얼마나 오래, 타당하게..

[ADsP] 데이터의 이해 Section 01. 데이터의 이해

1. 데이터와 정보 01. 데이터의 정의와 특성 가. 데이터의 정의 데이터는 추론과 추정의 근거를 이루는 사실임 데이터는 단순한 객체로서의 가치뿐만 아니라 다른 객체와의 상호관계 속에서 가치를 갖는다 나. 데이터의 특성 구분 특성 존재적 특성 객관적 사실(Fact, Raw Material) 당위적 특성 추론, 예측, 전망, 추정을 위한 근거(Basis) ❗"객관적 사실로서 개별 데이터는 중요하지 않다" 데이터가 축적되고 서로 비교가 가능할 때 그 의미가 있음 02. 데이터의 구분과 유형 가. 데이터의 구분 구분 형태 예 특징 정성적 데이터(Qualitative Data) - 언어, 문자 등 형식이 정해져 있지 않음 - 회사 매출이 증가함 - 설문 조사 주관식 응답 - 비정형 데이터 - 주관적 내용 - 통..

[Data Structure] Linear - (6) Queue

큐(Queue) 선입선출(First-In First-Out, FIFO)특징을 가진 자료구조다. 즉, 가장 나중에 들어온 자료가 가장 먼저 나가도록 되어 있다. 커스텀 큐 구현 싱글리 링크드 리스트로 큐를 구현해보자. 스택과 차이점은 한쪽 끝에서 연산이 이루어 지는 게 아니라 양쪽에서 각각 삽입과 인출이 일어난다는 것이다. 따라서 레퍼런스를 front와 rear로 두고 rear측에 새로운 노드가 삽입되고, front측에서 노드가 나가는 형태로 구현을 해야 한다. from typing import Iterable, Optional class Node: """싱글리 링크드 리스트 노드""" def __init__(self, data) -> None: self.data = data self.next = None..

[Data Structure] Linear - (5) Stack

스택(Stack) 후입선출(Last-in First-Out, LIFO)특징을 가진 자료구조다. 즉, 가장 최근에 들어온 자료가 가장 먼저 나가도록 되어 있다. 커스텀 스택구현 파이썬으로 스택을 구현하기 위해선 우선 두 가지 고려할 점이 있다. List? 일반적인 경우 그냥 파이썬 리스트로 스택을 사용해도 된다. 하지만 값이 계속해서 삽입되는 경우 파이썬 리스트는 동적 배열이므로 공간을 자동적으로 확장하면서 O(n)의 시간이 걸릴 때가 가끔 있다. 참고 공간이 작을 땐 문제가 안되겠지만 무지막지하게 큰 경우 시간이 오래 걸릴 수도 있다. Singly Linked List? 어차피 후입선출, 즉 맨끝에서만 자료가 삽입되고 나갈 수 있도록 구현하면 된다 각 자료들이 레퍼런스로만 연결되어 있기 때문에 공간의 확..

[Data Structure] Linear - (4) Deque

데크(Deque) 큐가 양쪽으로 연결된 형태. 따라서 양쪽에서 삽입과 삭제가 가능하다. 이미 파이썬에는 collections모듈에 deque가 구현되어 있다. c/c++로 구현되어 있으며 양쪽에서 삽입과 삭제가 가능해야 하므로 더블리 링크드 리스트로 만들어져 있다. 이로 인해 양쪽에서 삽입과 삭제가 O(1)의 시간이 걸리므로 코딩테스트 파이썬에서 스택이나 큐를 이용할 때 이 데크를 사용하기도 한다. 커스텀 데크 구현 파이썬으로 데크를 구현해 보았다. from typing import Iterable, Optional class Node: """더블리 링크드 리스트의 노드 클래스""" def __init__(self, data) -> None: self.data = data self.prev = None ..

[Data Structure] Linear - (3) Linked List - Circular Linked List

원형 링크드 리스트 (Circular Linked List) 싱글리 링크드 리스트에서 마지막 노드가 다시 첫 노드와 연결되어 있는 자료구조다. 따라서 마지막 노드와 첫번째 노드를 O(1) 시간에 방문할 수 있다는 장점과 리스트가 비어있을 때를 제외하고 모든 노드의 레퍼런스가 None을 가지지 않기 때문에 None 조건에서 조금 자유로울 수 있다는 장점을 가지고 있다. 하지만 싱글리 링크드 리스트로 구현했다면 앞 노드를 방문하기는 쉽지 않다는 단점이 있다. 더블리 링크드 리스트로 구현하면 해결된다. 또한 무한 반복의 우려가 있다. class Node: def __init__(self, data) -> None: self.data = data self.next = None class CircularLinke..

[Data Structure] Linear - (2) Linked List - Doubly Linked List

더블리 링크드 리스트 (Doubly Linked List) 노드들이 다음 노드 뿐만 아니라 이전 노드에 대한 레퍼런스까지 가진 링크드 리스트를 더블리 링크드 리스트라고 한다. 앞과 뒤의 노드에 대한 레퍼런스를 가지고 있기 때문에 양 방향으로 탐색할 수 있는 특징이 있다. 노드(Node) class Node: """더블리 링크드 리스트 노드""" def __init__(self, data) -> None: self.data = data self.next = None # 다음 노드에 대한 레퍼런스 self.prev = None # 이전 노드에 대한 레퍼런스 def __str__(self) -> str: return str(self.data) # 노드 인스턴스 node1 = Node(3) node2 = Nod..

[Oracle] 002. Ids_OracleConfigDlg_DatabaseConfigFailedMsg An error occurredwhile configuring Oracle XE database

👀 문제점 오라클을 삭제하고 다시 설치하는 과정에서 다음과 같은 오류가 발생했다. '앱 및 기능'을 통해 오라클을 삭제했음에도 불구하고 오라클 데이터베이스를 구성하는 과정에서 오류가 발생했다. 🧐 해결 오라클을 삭제할 때 일부 파일, 레지스트리, 환경변수가 함께 삭제되지 않아서 발생하는 문제였다. 해결책은 아래 파일들을 손수 지워주면 된다. (C드라이브 기본 경로 설치 기준) 1. C:\app 폴더 이하 전부 삭제 데이터베이스 서버 구동 관련 파일과 중요한 DB 관련 정보가 들어있는 폴더로, 전부가 삭제되지 않을 때가 있다. C:\app\사용자이름\product\21c\... 과 같은 경로를 가진 폴더가 남아있다면 지워주자. 🔍가끔 폴더가 삭제되지 않을 수가 있다. dat파일이 아직 실행중이라거나.. 작..

[SQLD] SQL 기본 및 활용 Section 03. SQL 최적화의 원리

1. 옵티마이저(Optimizer)와 실행 계획 01. 옵티마이저 SQL 개발자가 SQL을 작성하고 실행할 때, 옵티마이저가 SQL을 어떻게 실행할 것인가를 계획함 즉, SQL 실행 계획(Execution Plan)을 수립하고 SQL을 실행함 옵티마이저는 SQL의 실행 계획을 수립하고 SQL을 실행하는 DBMS의 소프트웨어 결과가 같은 SQL문도 어떻게 실행하느냐에 따라 성능이 달라지므로 옵티마이저의 실행 계획은 SQL 성능에 아주 중요한 역할을 함 02. 옵티마이저 특징 데이터베이스에 관한 모든 메타데이터를 가지고 있는 데이터 딕셔너리(Data Dictionary)에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해 예상되는 비용을 산정 여러 개의 실행 계획 중에서 최저 비용을 가지고 있는 계획을 ..

반응형