분류 전체보기 57

CommonJS와 HTTP 모듈

1. 모듈 불러오기 ✅ http 모듈- Node.js의 내장 모듈- 클라이언트의 요청(request)를 받고, 서버의 응답(response)을 보내는 기능을 제공 - 웹 서버를 만들고 요청과 응답을 처리하는 모듈✅ url 모듈URL 주소를 분석하고 필요한 정보를 꺼내기 위한 Node.js의 내장 모듈2. 서버 생성👉 http 모듈에게 사용자가 요청하면 이 함수를 실행하라고 알려줌👉 req(사용자의 요청 정보), res(사용자에게 보낼 응답) 는 자동으로 전달됨2.1 첫번째 라우팅( / )👉 사용자가 http://localhost:3000/ 으로 들어오면 실행한다. ✅ writeHead()👉 클라이언트에게 응답에 대한 정보를 전달하는 함수 👉 이 정보를 통해 브라우저는 어떤 형식의 데이터를 받을..

nodejs 2026.06.30

다익스트라 알고리즘

1. 최단 경로 알고리즘최단 경로 알고리즘은 그래프(Graph)안에서 두 정점 사이를 이동할 때 가장 짧은 경로를 찾는 것을 의미한다.대표적인 최단 경로 알고리즘으로는 다익스트라(Dijkstra), 벨만-포드(Bellman-Ford), 플로이드-워셜(Floyd-Warshall) 알고리즘 등이 존재한다.2. 다익스트라 알고리즘2.1 다익스트라 알고리즘이란?다익스트라 알고리즘은 하나의 시작 정점으로부터 시작해 다른 모든 정점까지의 최단 경로를 찾는 알고리즘이다.최단 경로 문제를 해결한다는 것은 그래프 내부의 간선(Edge)들을 탐색하면서, 한 정점에서 다른 정점으로 이동할 때 간선들의 가중치 합이 가장 작은 경로를 찾는 것을 의미한다.이 때, 경로를 구성하는 간선들의 가중치 합을 경로 비용(Path Cost..

python 2026.06.24

그리디 알고리즘(Greedy Algorithm)

1. 그리디(Greedy) 알고리즘이란1.1 왜 탐욕 알고리즘이라고 부를까?매 순간 가장 유리해보이는 선택을 하기 때문이다. Greedy 알고리즘은 매 단 계마다 지금 당장 가장 좋아 보이는 선택을 하는 방식의 알고리즘이다.이런 선택을 계속 반복하면서 최종적으로는 최적의 해를 찾을 수 있기를 기대한다.1.2 동작 방식1️⃣ 목표 정하기먼저 문제에서 무엇을 최적화할 것인지를 결정한다.예를 들어 가치의 합을 최대화하거나 비용을 최소화하는 것이 목표가 될 수 있다. 2️⃣ 현재 상황에서 가장 좋아 보이는 선택하기지금 당장 가장 유리하다고 판단되는 선택지를 고른다 3️⃣ 해당 선택이 가능한 지 확인선택한 항목이 문제의 조건이나 제약 사항을 만족하는 지 체크한다. 조건을 만족하지 못하면 다른 선택지를 고려한다. ..

python 2026.06.22

탐색 알고리즘(Search Algorithm)

1. 탐색 알고리즘이란?우리는 종종 수백, 수천 개, 더 나아가 수십만 개의 데이터 중에서 특정 값을 찾아야 할 때가 있다. 예를 들어 휴대폰에서 특정 연락처를 찾거나, 수많은 정보 속에서 원하는 데이터를 검색해야 하는 상황이 그렇다.이때 중요한 역할을 하는 것이 바로 탐색 알고리즘(Search Algorithm) 이다. 만약 탐색 알고리즘이 없다면, 원하는 데이터를 찾기 위해 모든 데이터를 하나씩 직접 확인해야 한다. 데이터의 양이 많아질수록 이러한 방식은 시간이 오래 걸리고 비효율적일 수 있다. 탐색 알고리즘은 컴퓨터 사이언스에서 여러 데이터(컬렉션 자료형) 안에서 원하는 값을 더 효율적으로 찾기 위해 사용되는 알고리즘 이다.대표적인 탐색 알고리즘으로는 선형 탐색(Linear Search) 과 이진 ..

python 2026.06.16

정렬 알고리즘 - ③ 병합 정렬

병합 정렬병합 정렬(Merge Sort) 은 효율적이고 안정적인 정렬 알고리즘 중 하나로, 분할 정복(Divide and Conquer) 방식을 사용한다.쉽게 말하면, 배열을 계속 절반으로 나눈 뒤 정렬하면서 다시 합쳐가는 방식이다. 병합 정렬은 먼저 입력된 배열을 재귀적으로 두 개의 절반으로 나누고, 나누어진 배열들을 각각 정렬한 뒤, 마지막에 다시 병합(merge) 하여 최종적으로 정렬된 배열을 만든다.병합 정렬의 동작 방식 1️⃣ Divide(분할)배열을 더 이상 나눌 수 없을 때까지 계속 절반씩 나눈다 👉 배열의 크기가 1이 될 때까지 재귀적으로 분할한다2️⃣ Conquer (정복)나누어진 각 부분 배열을 정렬한다.👉 원소가 1개인 배열은 이미 정렬된 상태이기 때문에 다시 정렬할 필요가 없다...

python 2026.06.12

정렬 알고리즘 ② - 퀵 정렬

퀵 정렬(Quick Sort)퀵 정렬(Quick Sort) 은 분할 정복(Divide and Conquer) 방식을 사용하는 정렬 알고리즘이다.여기서 기준이 되는 값(pivot)을 정한 뒤 그 값을 기준으로 작은 값과 큰 값을 나누어 정렬한다. 이 때, Pivot이 어떤 값인지에 따라 정렬 성능이 달라질 수 있다.동작 방식1️⃣ Pivot 선택하기먼저 기준이 될 값(pivot) 을 하나 선택한다. pivot은 상황에 따라 다르게 정할 수 있는데, 보통첫 번째 값마지막 값랜덤 값중앙값을 사용한다.2️⃣ Pivot 기준으로 값 나누기 이제 pivot을 기준으로 배열을 나눈다.pivot보다 작은 값 → 왼쪽pivot보다 큰 값 → 오른쪽으로 이동하게 된다.예를 들어[7, 5, 2, 4, 8, 1, 3]pivo..

python 2026.06.12

재귀함수(Recursive Function)

재귀 함수(Recursive Function)란?자기 자신을 직접적이든 간접적으로 다시 호출하는 함수를 재귀 함수라고 한다.🤔 일반함수와 어떻게 다른가? 일반적으로 함수는 자신만의 scope(범위)를 가진다.즉, 함수 안에서 만든 변수나 코드들은 그 함수 안에서만 사용되는 작은 공간을 가진다는 뜻이다.그리고 함수가 호출되면, 컴퓨터는 그 함수가 실행되기 위한 정보들을 스택(Stack)에 저장해둔다. 일반 함수는 보통 한 번 호출되고 실행이 끝나면 종료된다. 예를 들어,def hello(): print('안녕!')hello()이 경우 hello()함수는 한 번 실행되고 끝난다. 즉, Stack에 함수 실행 정보가 한 번만 쌓였다가 사라지는 것이다. 반면, 재귀 함수는 함수 안에서 자기 자신을 다..

python 2026.06.11

정렬 알고리즘 ① 버블정렬, 선택 정렬 , 삽입 정렬

정렬이란?정렬은 데이터를 특정 기준에 따라 오름차순이나 내림차순으로 재배열하는 작업을 말한다. 정렬은 크게 내부 정렬과 외부 정렬 두 가지로 나뉜다- 내부 정렬(Internal Sorting)데이터양이 비교적 적을 때 주기억 장치(RAM)안에서 바로 정렬하는 방법이다. ※ RAM : 처리 속도는 매우 빠르지만, 용량이 상대적으로 작은 편이다.- 외부 정렬 (External Sorting)데이터양이 매우 많아서 RAM 안에 한 번에 올릴 수 없을 때, SSD나 HDD 같은 보조기억장치를 활용해 정렬하는 방식이다. ※ 보조기억장치(SSD/HDD) : 저장 용량은 크지만, RAM에 비해 속도가 느린 편이다.내부 정렬우리가 흔히 아는 정렬 알고리즘은 대부분 내부 정렬이다. 버블 정렬, 선택 정렬, 삽입 정렬 같..

python 2026.06.10

MySQL과 Python 연동해서 단어장 프로그램 만들어보기

이번에는 Python과 MySQL을 연결해서 간단한 단어장 프로그램을 구현해보았다.이 프로그램의 작동 원리는 다음과 같다. 사용자에게 메뉴를 보여준다 (단어 등록 ,조회 ,수정, 삭제 등 원하는 기능을 선택할 수 있다) (Menu)사용자가 원하는 메뉴 번호를 선택한다선택한 메뉴에 따라 해당 기능을 실행한다. (Service)ㄴ 필요한 경우 MySQL DB에 데이터를 저장,수정하거나 조회한다. (WordsDAO)💻 사용할 테이블 voca이번 단어장 프로그램에서는 영어 단어, 뜻,그리고 레벨을 저장할 수 있는 voca 테이블을 이용 해보았다. MySQLWorkbench 에서select * from voca를 실행하면 아래와 같이 결과가 나온다 1. Word 클래스 만들기먼저 단어 하나의 정보를 관리하기 ..

데이터 분석 2026.06.10

Python과 MySQL을 연동해서 회원 관리 기능 구현해보기

회원가입 프로그램 예제Python과 MySQL을 연동해서 간단한 회원가입 프로그램을 구현해보았다. 이전까지는 MySQL Workbench에서 SQL문만 실행해봤다면, 이번에는 파이썬에서 직접 SQL문을 작성하고 실행하는 방식을 연습해 보았다. 이번 실습을 통해 cursor(), execute(), commit()이 각각 어떤 역할을 하는지 조금씩 이해할 수 있게 되었다. 🔨 MySQL과 Python 연결 설정어떤 작업을 하든 가장 먼저 Python과 MySQL을 연결해주는 과정이 필요하다.import MySQLdb 👉 먼저 MySQL과 연결하기 위해 라이브러리를 import 해준다. db = MySQLdb.connect(host='localhost', user='root', password='1234..

데이터 분석 2026.06.09