CS 17

BFS 너비 우선 탐색

BFS : Breadth Frist Search : 너비 우선 탐색트리나 그래프에서 특정 노드를 시작으로 인접 노드를 먼저 탐색한 후, 다음 레벨로 이동하여 인접 노드를 탐색한다이러한 방법으로 모든 노드를 탐색하는 것을 BFS라고 한다 큐로 구현 가능하다 최단 경로 찾기, 최소 비용 문제, 최소 이동 or 변경 문제, 스도쿠 등에서 활용 가능하다 void bfs(int node, vector graph[], bool visited[], std::queue q){ q.push(node); visited[node] = true; while (!q.empty()) { int current = q.front(); q.pop(); std::cout ..

CS/알고리즘 2024.11.06

DFS 깊이 우선 탐색

DFS : Depth Frist Search : 깊이 우선 탐색트리나 그래프에서 특정 노드를 시작으로 다음 노드를 탐색하며 갈림길을 만나면 저장해놨다가 진행하는 루트의 끝에 도달했을 때 갈림길로 돌아가 다른 다음 노드를 탐색한다이러한 방법으로 모든 노드를 탐색하는 것을 DFS라고 한다 대표적인 예로 백트래킹이 있다백트래킹은 DFS와 동일하지만, 조건을 만족 시킬 경우에만 다음 노드로 넘어간다는 점에서 루트의 끝에 도달하는 DFS와 차이가 있다 재귀와 스택으로 구현 가능하며,재귀 형태일 때는 순환 그래프면 안된다는 제한 사항과 스택 형태일 때는 스택 오버플로우에 유의해야한다는 특징이 존재한다 경로 탐색, 그룹 찾기, 사이클 검출 등에서 활용 가능하다 재귀// 재귀 DFSvoid dfs(int node, v..

CS/알고리즘 2024.11.06

[MySQL] 초기 접속, 비밀번호 변경, DB · TABLE 생성, CRUD

접속 및 초기 접속 sudo mysql -u root -p 초기 비밀번호는 없기 때문에 그냥 엔터치면 로그인이 된다 비밀번호르 변경한 경우에는 변경한 비밀번호를 입력하자 비밀번호 변경 sudo mysqladmin -u root -p password 변경할비밀번호 기존 비밀번호를 입력하면 비밀번호가 변경된다 적용 시키기 위해서는 sudo service mysql restart 이후 다시 접속할 때 변경한 비밀번호를 입력하면 된다 DB 생성 및 삭제, 조회, 접속 DB 생성 CREATE DATABASE DB이름 CHARACTER SET utf8 COLLATE utf8_general_ci; DB 조회 show databases; DB 접속 USE DB이름 DB 삭제 DROP DATABASE DB이름; TABL..

CS/DB 2024.02.22

데이터베이스 기초

스키마 (Shema) : 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것 인스턴스 (Instance) : 스키마에 따라 데이터베이스에 실제로 저장된 값 개체-관계 모델 개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현하는 방법 개체 사물이나 사람 등의 구별되는 모든 것 / 각 개체는 고유한 특성이나 상태 (속성)을 하나 이상 가지고 있음 속성 개체가 가지고 있는 고유한 특성 속성은 3가지 기준으로 분류된다 속성 속성 값의 개수 단일 값 속성 이름 다중 값 속성 연락처 (휴대폰, 집 전화) 의미의 분해 가능성 단순 속성 복합 속성 주소 (도, 시, 동, 우편번호) 기존 속성 값에서 유도 유도 속성 가격 + 할인율 => 판매 가격 널 속성 : 아직 결정되지 않았거나 모르는 값 키 속..

CS/DB 2024.02.13

그래프

그래프는 객체 사이의 연결 관계를 표현할 수 있는 자료 구조로 정점 (vertex)와 간선 (edge)들의 유한 집합이다 그래프는 수학적으로 G = (V, E)와 같이 표현하며 V(G)는 정점의 집합을, E(G)는 간선의 집합을 나타낸다 그래프의 종류 무방향 그래프 - V(G) = {A, B, C, D, E, F} - E(G) = {(A, B), (A, D), (A, E), (B, C), (B, E), (E, F)} 방향 그래프 - V(G) = {A, B, C, D, E, F} - E(G) = {, , , , , } - 와 는 서로 다른 간선 가중치 그래프 (네트워크) 차수 (Degree)와 경로 인접 정점 (adjacent vertex) : 간선에 의해 직접 연결된 정점 차수 : 해당 정점에 인접한 정..

CS/자료구조 2024.01.30

우선순위 큐

우선순위 큐는 기존의 큐에 우선순위의 개념을 도입한 자료구조로, 우선순위를 어떻게 하느냐에 따라 우선순위 큐는 스택이나 큐처럼 동작할 수도 있다 우선순위 큐는 배열, 연결 리스트, 힙 등의 방법으로 구현이 가능하다 1. 배열 비정렬 배열 - 삽입 : 배열의 맨 끝에 새 요소 추가 / O(1) - 삭제 : 배열 내에서 우선 순위가 높은 요소를 찾고 해당 요소를 삭제 / O(n) - 삭제 후 빈 자리를 메우기 위해 앞으로 이동 정렬 배열 - 삽입 : 이진탐색이나 순차탐색 등을 활용하여 삽입 위치를 파악 후, 해당 위치 뒤의 요소들을 뒤로 이동시키고 새 요소 추가 / O(n) - 삭제 : 정리된 배열 내의 맨 앞이나 맨 뒤의 요소를 삭제 2. 연결 리스트 비정렬 연결 리스트 - 삽입 : 첫 번째 노드로 삽입 ..

CS/자료구조 2024.01.27

트리

트리는 계층적인 자료를 표현하는데 적합한 자료구조이다 트리의 구성 요소에 대해 먼저 알아보자 - 트리는 노드와 엣지의 결합으로 이루어 지는데, 트리는 한 개 이상의 노드로 이루어지고 이러한 노드를 엣지로 연결한다 트리는 여러 관계를 지닌다 - 루트 노드 & 서브 트리 : 트리 중 하나의 노드를 루트 노드라고 하면 해당 노드를 제외한 아래 노드들을 서브 트리라고 칭한다 - 부모 관계 : B는 E와 F의 부모 / E와 F는 B의 자식 - 형제 관계 : B와 C와 D는 형제 / E와 F는 형제 / H와 I와 J는 형제 - 조상 & 자손 : D를 기준으로 H, I, J, K는 자손 노드, A는 조상 노드 트리는 여러 정보를 가지고 있다 - 단말 노드 : 자식 노드가 없는 노드 E, F, G, I, J, K - ..

CS/자료구조 2024.01.11

[ODBC, 비주얼 스튜디오, SQL Server] 데이터 삽입, 삭제

데이터 가져오기에 이어서 데이터 삽입, 삭제를 알아보려고 한다 데이터 삽입 먼저 위와 같이 다이얼로그를 수정한다 클래스 마법사에서 버튼 클릭 함수를 추가한다 void Ct1Dlg::OnClickedButton2() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. // ID과 이름, 주소를 저장할 객체들 CString str_id, str_name, str_addr, str_query; // Edit 컨트롤에서 복사 GetDlgItemText(IDC_EDIT1, str_id); GetDlgItemText(IDC_EDIT2, str_name); GetDlgItemText(IDC_EDIT3, str_addr); // SQL 명령문 구성 str_query.Format(L"INSERT INTO ..

CS/DB 2023.11.05

[ODBC, 비주얼 스튜디오, SQL Server] 데이터 가져오기

비주얼 스튜디오에 SQL Server 데이터베이스를 연결해보자 로컬에서도 데이터베이스에 접근할 수도 있고 외부 컴퓨터에서도 데이터베이스에 접근할 수도 있기 때문에, 두 방법 모두 포용하기 위해 TCP 프로토콜을 허용하는 방법으로 알아보려고 한다 먼저 TCP 프로토콜을 허용해주기 위해 SQL Server 2022 구성 관리자에서 프로토콜 TCP/IP를 사용으로 바꿔주고 SSMS의 기본 인스턴스에서 특성을 들어가 보안에서 SQL Server 및 Windows 인증 모드로 변경하고 OK 위와 같이 인스턴스를 재시작해주자 비주얼 스튜디오에 접속할 아이디와 비밀번호를 생성하고 해당 아이디에 admin 권한을 부여한다 아이디랑 비밀번호 기억! 외부에서 서버로 활용할 (DB가 깔려있는) 컴퓨터에 접속할 수 있도록 방..

CS/DB 2023.11.04