본문 바로가기

728x90
반응형

Dev

[TIP] 컴퓨터 OS | 파일 시스템 | 터미널 환경의 기본 1. 컴퓨터 OS (Operating System, 운영체제) 우리의 프로그램이 동작할 수 있는 구동 환경 및 기반 시스템 (예) Windows, Mac OS 등 ... SW(Application, Operating System) H/W(CPU, Memory) Application은 OS에 의존적인(dependent) 형태를 띄고 있음 (그러나 Python은 OS에 독립적인 형태) 어떤 개발 환경에서 개발을 실행할 것 인가에 대한 선택! 2. 파일 시스템 OS에서 파일을 저장하는 트리구조의 저장 체계 파일: 컴퓨터 등의 기기에서 의미 있는 정보를 담는 논리적인 단위, 파일명과 확장자로 식별됨 (예) sample.py 디렉토리(Directory): 폴더 또는 디렉토리로 불림, 파일과 다른 디렉토리를 포함할.. 더보기
[CS, Computer Science] 디자인 패턴 #1 (싱글톤 패턴, 팩토리 패턴, 전략 패턴, 옵저버 패턴, 프록시 패턴과 프록시 서버) 디자인 패턴이란? : 프로그램 설계 시 발생한 문제를 객체간의 상호관계 등을 이용해 해결할 수 있도록 하는 것 1. 싱글톤 패턴(Singleton pattern) : 하나의 클래스에 하나의 인스턴스를 가지는 것 (예: 데이터베이스 연결 모듈 - mongoDB의 mongoose 모듈, MySQL 등) [장점] 인스턴스 생성 비용 감소 [단점] 의존성 증가 → TDD (Test Driven Development)의 걸림돌이 됨 (단위 테스트를 위한 독립적인 인스턴스를 생성하지 못하기 때문) 의존성 증가 문제를 해결하기 위한 도구로 '의존성 주입(DI, Dependency Injection)' 을 사용 : 메인모듈 말고 '의존성 주입자'가 간접적으로 하위 모듈에 의존성을 주입함 (=디커플링 되다) (장점) 테.. 더보기
[백준/BOJ] 백준 코딩 알고리즘 1935번/Python 백준 코딩 알고리즘 문제 1935번 백준 코딩 알고리즘 문제 1935번 풀이 - 사용 언어: Python # Practive 002 : Postfix # https://boj.kr/1935 N = int(input()) input_str = input() operand_stk = [] # save operand data to each chr operand_data = dict() for i in range(N): operand_data[chr(65+i)] = int(input()) # calculate input for c in input_str: if 65 더보기
[Data Structure] 맵(Map) | 맵이란? | HashMap | TreeMap | LinkedHashMap Map Data Structure 다섯 번째 스터디 : 맵 (Map) Map Key와 Value를 가진 집합 중복을 허용하지 않음 (1개의 key - 1개의 value) Map 컬렉션에 여러 종류의 클래스가 있는데, 그중 가장 많이 사용되는 것이** HashMap, TreeMap, LinkedHashMap** 1. HashMap HashMap → 내부적으로 array 형태로 저장 → 검색속도 매우 빠름 맵의 순서를 보증하지 않음 (내부 Hash 값에 따라 키순서가 정해져서, 규칙 X) 비동기 클래스 NULL값을 허용 비교사항 Hash Table Hash Map 병렬처리 권장 비권장 동기화 지원 미지원 속도 비교적 느림 비교적 빠름 Null 비허용 허용 2. TreeMap TreeMap → 내부적으로 이진.. 더보기
[Data Structure] 트라이(Trei) | 트라이란? | 트라이의 구조 | 트라이의 특징 트라이(Trie) Data Structure 다섯 번째 스터디 : 트라이 (Trie) 트라이(Trie)란? 문자열 집합을 효율적으로 저장하고 탐색하기 위해 특화된 트리 자료구조 Digital Tree, Radix Tree, Prefix Tree 라고도 부름 → 트라이는 retrieval tree에서 나온 단어 문자열 자동 완성 기능과 같이 문자열을 저장하고 탐색하는데 유용하게 사용 됨 트라이(Trie)의 구조 루트 노드는 특정 문자를 의미하지 않고 자식 노드만 가지고 있다 (= 루트 노드는 빈 문자와 연관) 이 때, 자식 노드를 Map 형태로 가지고 있다 루트 노드를 제외한 노드의 자손들은 해당 노드와 공통 접두어를 가지고 있다 정렬된 트리구조이다 트라이(Trie)의 특징 [장점] 문자열을 하나씩 전부 .. 더보기
[Data Structure] 해시(Hash) | 해시 테이블 | 해시 테이블의 충돌 해결 방법 | Hash Table vs Hash Map 해시 (Hash) Data Structure 네 번째 스터디 : 해시 (Hash) 해시(Hash)란? 해시 알고리즘을 사용하여 고유한 인덱스를 토대로 데이터를 저장하는 자료 구조 인덱스를 사용 → 빠른 검색 속도 내부적으로 배열을 사용 해시(Hash)를 이해하기 위한 용어 정리 해시(Hash, Hash Code) : 다양한 길이의 데이터를 고정된 길이의 데이터로 매핑한 값 해시 함수(Hash Function): 임의의 길이의 데이터를 고정된 길이의 데이터(해시, Hash)로 매핑하는 함수 가장 널리 사용되는 해시함수에는 MD5와 SHA-1 등이 있음 MD5: 무결성 검사 등에 사용되는 128비트 암호화 해시 함수 SHA-1: 미국 국가안보국이 설계한 160비트 해시값을 만드는 암호화 해시 함수로 미국의 .. 더보기
[Data Structure] 이진 탐색 트리 | BST | Binary Search Tree | 시간복잡도 | 전위/중위/후위 순회 이진 탐색 트리 BST(Binary Search Tree) Data Structure 네 번째 스터디 : BST (Binary Search Tree) 이진 탐색 트리의 목적 이진 탐색 연결 리스트 탐색 O(logN) 탐색 O(N) 삽입, 삭제 불가능 삽입, 삭제 O(1) → 위 두 가지를 합하여 장점을 모두 얻도록 고안된 것 → 효율적인 탐색 능력 + 자료의 삽입/삭제도 가능하도록 함 → 주요 연산: 노드 검색, 노드 삽입/삭제, 트리 생성/삭제 이진 탐색 트리의 특징 및 규칙 중복된 노드가 없이 노드에 저장된 키는 유일하다 중복이 많을 경우에는 검색을 목적으로 하는 이 자료구조에 적합하지 않음 중복이 생기는 경우에는 트리에 삽입 X → 노드에 카운팅하는것이 더 효율적 부모 노드의 키가 왼쪽 서브트리를 .. 더보기
[Data Structure] B Tree(Balanced Tree) | B Tree 규칙 | B+ Tree | B Tree와 B+ Tree 차이 B Tree & B+ Tree Data Structure 세 번째 스터디 : B Tree & B+ Tree B Tree란? Balanced Tree : 좌우 균형을 맞추어 트리의 검색, 삽입, 삭제 시 시간 복잡도를 개선한 자료구조 이진 트리를 확장하여서 더 많은 수의 자식 수를 가질 수 있도록 일반화 노드 내 데이터 수에 따라서 2차 B-Tree, 3차 B-Tree, ... M차 B-Tree) 이진 트리 구조의 간결함 + 균형 → 검색/삽입/삭제 모두 O(logN) B Tree 규칙 노드의 데이터 수가 N이면, 자식 수는 N+1 각 노드의 데이터는 정렬된 상태이어야 함 루트 노드는 적어도 2개 이상의 자식을 가져야 함 루트 노드를 제외한 모든 노드는 적어도 M/2개의 데이터를 가지고 있어야 함 (M=노.. 더보기

728x90
반응형