개발로 자기계발
728x90
SMALL
article thumbnail
자료구조 & 알고리즘(문제 풀이 포함) - 5
Develop/기초지식 2024. 7. 30. 14:49

힙(Heap)- 힙(heap)은 데이터를 저장하고 조작하는 데 사용되는 트리 기반 자료구조- 일반적으로 힙은 완전 이진트리(complete binary tree)를 기반으로 하며, 부모 노드와 자식 노드 간의 대소 관계가 있다.- 최소 힙(min heap)은 부모 노드가 항상 자식 노드보다 작거나 같은 값을 가지는 힙을 말하며,- 최대 힙(max heap)은 부모 노드가 항상 자식 노드보다 크거나 같은 값을 가지는 힙을 말한다. 문제 1) 프로그래머스 - 더 맵게# heapq는 파이썬의 내장 라이브러리 중 하나로, 힙(heap) 자료구조를 제공하는 모듈# heapq 모듈은 리스트(list)를 힙 자료구조로 변환하고, 힙의 원소를 삽입하고 삭제하는 함수들을 제공한다.# heappush 함수는 힙에 원소를 ..

article thumbnail
자료구조 & 알고리즘(문제 풀이 포함) - 4
Develop/기초지식 2024. 7. 30. 14:48

해시(Hash)- 임의의 크기를 가진 데이터를 고정된 크기의 데이터로 매핑하는 함수문제 1) 프로그래머스: 완주하지 못한 선수 * 라이브러리 없이 풀이def solution(participant, completion): part = {} for person in participant: part[person] = part.get(person, 0) + 1 for person in completion: part[person] -= 1 result = [key for key, value in part.items() if value > 0] return result[0]이 코드의 시간 복잡도는 O(n)for 문을 사용하여 parti..

Django에서 SSH 터널링(EC2)으로 RDS 연동하기
Develop/Django 2023. 5. 5. 19:19

SSH 터널링SSH(Secure Shell) 프로토콜을 사용하여 네트워크 상의 다른 컴퓨터와 안전하게 통신할 수 있는 방법이다. 주로 두 가지의 유형이 있는데1. 로컬 포트 포워딩2. 리모트 포트 포워딩 현재 글에서는 로컬 포트 포워딩으로 진행될 것이다.서버는 EC2의 서버가 될 것이고, 데이터베이스는 RDS가 될 것이다.서버는 Ubuntu를 사용 중이다. 설치1) 라이브러리 설치pip install sshtunnel 2) 라이브러리 importfrom sshtunnel import SSHTunnelForwarder 3) Setting.py의 Database섹터에 SSH 터널 설정server = SSHTunnelForwarder( (Environ.SSH_TUNNEL_HOST, Environ.SSH_..

article thumbnail
OrderedDict 사용해보기
Develop/기초지식 2023. 4. 26. 08:20

collections 모듈에서 제공하는 OrderedDict는 키-값 쌍(key-value pairs)을 입력 순서를 유지하며 저장하는 딕셔너리이다.기본 파이썬 딕셔너리는 파이썬 3.7 이상부터 입력 순서를 보장하게 되었기 때문에, 현재 파이썬 버전에서는 일반 딕셔너리를 사용해도 입력 순서가 유지된다.그러나 이전 버전의 파이썬이나 명시적으로 순서가 보장되는 딕셔너리를 사용하고 싶을 때 OrderedDict를 사용할 수 있다.https://docs.python.org/ko/3.7/whatsnew/3.7.html# 파이썬 3.7의 새로운 기능 — Python 3.7.16 문서PEP 563 : 어노테이션의 지연된 평가 파이썬에서 형 힌트의 출현은 PEP 3107에서 추가되고 PEP 526에서 더욱 다듬어진 어..

좋은 코드 란?
Develop/기초지식 2023. 4. 20. 16:00

코드 작성 원칙1) DRY(Don't repeat yourself)- 소프트웨어 개발에서 중복 코드를 최소화하고, 코드의 가독성과 유지보수성을 향상하기 위한 원칙- 코드를 함수나 모듈화된 구성요소로 분리하여 재사용 가능한 코드를 작성합니다.- 일반적인 코드 패턴을 사용하여 코드의 일관성을 유지합니다.- 유사한 코드를 별도의 함수나 모듈로 분리하여 코드를 줄입니다.2) KISS(Keep it simple, stupid)- 불필요한 복잡성을 최소화하고, 코드의 이해와 유지보수를 쉽게 만들기 위한 것- 간단한 구조를 사용하여 복잡성을 최소화합니다.- 기능을 가능한 작게 유지합니다.- 최대한 적은 리소스를 사용하여 문제를 해결합니다.- 읽기 쉬운 코드를 작성하고, 이해하기 쉬운 변수 이름과 주석을 사용합니다. ..

article thumbnail
Django 프로젝트를 위한 Docker 환경 구성 가이드
Develop/Django 2023. 4. 16. 15:53

계속해서 Docker에 관심이 갔었고 이번 기회에 Docker 환경에서 Django 실행까지 가이드를 작성해보려고 한다. 도커를 사용하는 이유Docker는 애플리케이션과 그 종속성을 컨테이너라는 격리된 환경에 패키징하여 개발, 테스트, 배포 등의 과정에서 발생할 수 있는 환경 차이를 최소화한다. 이를 통해 개발 환경 구성을 간소화하고, 프로젝트의 일관성과 이식성을 높일 수 있다. 사전 설정Docker Desktop 다운https://www.docker.com/products/docker-desktop/ Download Docker Desktop | DockerDocker Desktop is available to download for free on Mac, Windows, or Linux operati..

article thumbnail
자료구조 & 알고리즘 - 3
Develop/기초지식 2023. 4. 12. 17:12

큐(Queues)- 자료의 입력과 출력이 각각 한쪽 끝에서 이루어지는 자료 구조 = 'FIFO(First-In-First-Out) 구조'- 대표적인 선형 자료구조로, 삽입(insert)과 삭제(delete)를 수행- 큐는 보통 배열(array)이나 연결 리스트(linked list)로 구현- 큐에 데이터를 삽입하는 것을 '인큐(Enqueue)'- 큐에서 데이터를 꺼내는 것을 '디큐(Dequeue)'- 선입선출* 스택은 후입선출 1) 큐의 연산- Enqueue(item) : 큐의 끝(rear)에 item을 추가 O(1)- Dequeue() : 큐의 첫(front) 항목을 반환(큐에서 제거 O) O(n)- isEmpty() : 큐가 비어 있는지 검사 O(1)- peek() : 큐의 첫(front) 항목을 반..

자료구조 & 알고리즘 - 2
Develop/기초지식 2023. 4. 11. 17:15

연결리스트(Linked Lists)- 데이터의 논리적 순서를 유지하면서, 물리적인 저장 위치는 다를 수 있는 데이터 구조- 데이터의 추가, 삭제가 빈번한 상황에서 유용하게 사용된다.- 연결 리스트는 노드(Node)들의 연결로 구성되며, 각 노드는 데이터와 포인터(Pointer)로 구성된다.* 포인터는 다음 노드를 가리키는 포인터(next 포인터)와 이전 노드를 가리키는 포인터(prev 포인터)가 있다.* 데이터는 노드에 저장하는 값이다.- 이러한 구조 때문에 연결 리스트는 단방향 연결 리스트(Singly Linked List)와 양방향 연결 리스트(Doubly Linked List)로 구분된다. 단방향 연결 리스트(Singly Linked List)- 각 노드는 다음 노드를 가리키는 포인터(next 포인..

자료구조 & 알고리즘 - 1
Develop/기초지식 2023. 4. 10. 17:36

자료구조- 데이터를 효율적으로 조직화, 저장 및 관리하기 위한 방법을 제공예시) 배열(Array)은 데이터를 순차적으로 접근하기에 적합한 자료구조 알고리즘- 어떤 문제를 해결하기 위한 절차나 방법론- 주어진 문제의 해결을 위한 자료구조와 연산 방법에 대한 선택 자료구조와 알고리즘의 관계- 적절한 자료구조를 선택하면 문제를 해결하는 알고리즘의 성능을 향상 선형 배열(Linear Arrays)- 선형 배열(Linear Array)은 데이터를 일렬로 저장하는 자료구조- 일반적으로 인덱스를 사용하여 각 요소에 접근할 수 있고 Python에서는 리스트(List)라는 데이터형- 메모리 상에서 연속된 공간에 데이터를 저장하며, 데이터를 빠르게 접근 가능- 데이터를 순서대로 저장하며, 인덱스를 사용하기 때문에 원하는 ..

코딩 테스트 특강 간단 정리
Develop/기초지식 2023. 4. 10. 16:09

코딩 테스트에 대한 대비 방법1. 구현 능력 갖추기- 프로그래밍 언어 학습(Python, Java, C/C++)2. 자료구조 이해- Array, Stack/Queue, Hash/Map, Tree, Graph3. 기초 알고리즘 및 시간 / 공간 복잡도에 대한 이해- 시간 복잡도: 알고리즘이나 프로그램이 실행되는 동안 소요되는 시간의 양- 공간 복잡도: 알고리즘이나 프로그램이 실행되는 동안 소요되는 메모리 공간의 양* 시간 복잡도가 낮으면 공간 복잡도가 높아지고, 공간 복잡도가 낮으면 시간 복잡도가 높아진다.4. 현실 문제 해결을 위한 알고리즘 적용 훈련5. 제한 시간 내에 오류 없이 코드 작성 및 디버깅할 수 있는 능력 훈련 효율적 / 효과적1) 효과적으로 해결하는 것?2) 효율적으로 해결하는 것?- 효과..

728x90
SMALL