목록분류 전체보기 (156)
Rootable의 개발일기

📌 퀵 정렬이란 하나의 리스트를 피벗(pivot)을 기준으로 하나는 pivot보다 작은 값들의 부분리스트, 하나는 pivot보다 큰 값들의 부분리스트로 정렬한 뒤, 각 부분리스트에 대해 재귀적으로 정렬하는 방법 🚩 분할 정복(Divide and Conquer) 알고리즘퀵 정렬은 기본적으로 '분할 정복' 알고리즘을 기반으로 정렬되는 방식이다. 다만, 병합 정렬(Merge Sort)과 다른 점은 병합 정렬은 하나의 리스트를 '절반' 으로 나누어 분할 정복을 하고, 퀵 정렬은 피벗(pivot)을 기준으로 분할 정복을 하기 때문에 하나의 리스트에 대해 비균등하게 나뉠 수 있다는 점이다.일반적인 성능: 퀵 정렬 > 병합 정렬 퀵 정렬은 '비교 정렬' 이며, 정렬의 대상이 되는 데이터 외에 추가적인 공간을 필요..

Ubuntu 환경에서 단체 채팅방을 C와 MySQL을 통해 구현했다. MySQL은 채팅 내용을 저장하는 용도로 사용한다. 📜 기능 목록 모든 사용자에게 채팅 메시지가 전달된다.최초 접속하면 최근 10개의 채팅을 볼 수 있다.채팅 내용은 MySQL에 저장한다. 📌 클라이언트 동작 흐름 MySQL 커넥션 초기화 및 연결서버와 통신할 소켓 생성소켓에 연결할 서버 주소 정보 바인딩서버에 연결 요청DB로부터 최근 10개 레코드 조회 후 각 클라이언트 화면에 출력데이터 전송시간 정보, 사용자 이름, 채팅 메시지 등을 포맷팅 하여 서버에 전송클라이언트가 'exit' 명령을 입력하면 로그아웃으로 간주하여 close 수행데이터 수신서버에서 작성한 메시지가 있다면 읽어온 후 출력 📌 서버 동작 흐름 MySQL 커넥션..

🤔 소켓이란 네트워크에서 데이터를 송수신할 수 있도록 네트워크 환경에 연결할 수 있게 만들어진 연결부 네트워크에 연결하기 위한 소켓은 정해진 규약, 즉 통신을 위한 프로토콜에 맞게 만들어져야 한다. 보통 OSI 7 계층 중 4 계층인 TCP 상에서 동작하는 소켓을 주로 사용하며, 이를 TCP 소켓 또는 TCP/IP 소켓이라고 부른다. 마찬가지로 UDP에서 동작하는 소켓을 UDP 소켓이라고 부른다. 소켓은 크게 프로토콜, IP 주소, 포트로 정의된다. 🚩 용어 정리프로토콜(Protocol)컴퓨터 사이에서 메시지를 주고 받는 데 필요한 양식, 약속이나 규약IP 주소(IP Address)각 장치(호스트)를 식별하기 위한 고유 주소. 송신자와 수신자를 식별포트(Port)IP 주소를 통해 도착한 호스트에서 어..

🚩 학습 목표 ✔ 연결 리스트 자료 구조 사용✔ 구조체 노드 생성✔ 포인터를 통한 데이터 접근✔ 계산기 구현 ✍ 연결 리스트 여러 데이터를 앞 뒤로 포인터를 통해 사슬처럼 연결할 수 있는 자료구조 🔎 특징 연속되는 항목들이 포인터로 연결되어 있음마지막 항목은 NULL을 가리킴프로그램이 수행되는 동안 크기가 동적으로 변함메모리 공간 낭비가 적지만 포인터 메모리가 필요함배열보다 데이터 추가와 삭제, 삽입 등 용이순차 접근을 해기 때문에 탐색 속도가 떨어짐데이터는 객체 단위로 추가함head의 링크를 끊어버리면 전체 노드를 삭제할 수 있음 🔨 구현 ✅ 선언 typedef struct{ double item; struct Node *ptr;} Node; 위와 같은 식으로 선언할 수 있다. 하지..