CS 56

알고리즘 기초 - 선형 및 이진 탐색

선형 알고리즘(Linear Algorithm)선형 알고리즘의 실행 시간은 요소 개수 증가에 정비례하여 증가하므로 시간 복잡도는 O(n)이다.선형 알고리즘은 데이터쌍(인덱스와 이에 매칭되는 값)을 이용해 선형적으로 요소를 탐색하는 방법이다.선형 탐색은 결과를 얻기 위해 배열의 모든 요소를 살펴봐야하므로 느리다. 선형 탐색은 모든 유형의 데이터에 적용할 수 있지만 비효율적이다. 이진 탐색 알고리즘선형 탐색을 보완하는 로그형 탐색 기술이다. 이진 탐색의 시간 복잡도는 O(logn)이다. 선형 탐색에서 시간 복잡도가 O(1)인 경우를 제외하면 선형 탐색보다 훨씬 효율적이다. 1. 배열의 중간 요소를 찾는다. 2.찾고 있는 숫자보다 작은 숫자를 삭제한다. (중간요소보다 앞에 있는 요소들을 삭제)반복. 이진 탐색은..

CS/알고리즘 2024.07.23

자료구조 기초 - 그래프

그래프그래프는 노드 사이의 연결을 보여준다. 컴퓨터 네트워킹이랑 여러 컴퓨터를 연결하는 것이다. 그래프는 컴퓨터(객체) 사이의 관계를 시각적으로 확인할 수 있는 주요 수단이다. 수학에서 파생된 그래프 이론은 컴퓨터 과학의 많은 응용 분야에 적용되고 있다.그래프는 기본적으로 다수의 원이 다수의 선으로 연결된 형태이므로 객체 사이의 관계를 볼 수 있다는 점에서 편리하다.많은 탐색 기반 알고리즘이 그래프에 의존한다. SNS를 설계할때도 그래프를 변형하여 사용한다.그래프 데이터베이스는 테이블로 연결되는 것이 아닌 데이터 중심으로 직접 연결되는 구성이므로 관계형 데이터베이스 관리 시스템(RDBMS)의 문제점을 개선하기 위해 사용될 수 있다. 구조화된 트리와 달리 그래프는 현실 세계에 존재하는 연결 관계를 더 잘 ..

CS/자료구조 2024.07.22

자료구조 기초 - 해시 데이터 구조

해시 어떤 길이의 임의 데이터를 고정 길이의 데이터로 매핑하는 것. 컴퓨터 보안 영역에서 주로 사용된다. 해시 함수 해시를 실행하려고 하나의 값을 다른 값으로 변환하는 함수. 해시 함수는 데이터를 입력하면 해시값을 출력한다. 해시 함수는 입력되는 데이터가 무엇이든 출력되는 해시값의 길이가 항상 고정되어 있다. 해시 충돌 서로 다른 입력 2개가 같은 해시값을 생성할 가능성도 조금 있다. 이때 해시 충돌이 발생한다. 해시 함수는 입력 데이터의 비트 하나만 달라져도 출력되는 해시값이 매우 많이 달라지므로 해시 충돌은 흔치 않다. 해시 함수가 잘 정의되었으면 내부 연산이 빠르고 충돌 발생이 적다. 해시 테이블 해싱(해시 테이블을 이용하는 탐색)할 때 사용하며, 키와 값으로 구성된 검색 시스템이다. 해시 테이블에..

CS/자료구조 2024.07.22

자료구조 기초 - 트리 데이터 구조

트리 트리 데이터 구조는 데이터를 계층으로 정렬한다. 루트 노드 나무의 뿌리(트리 구조에서는 맨 위)에 해당하며, 나머지 요소들은 루트 노드를 기준으로 구성된다.자식 노드(하위 노드) 루트 노드에서 멀어지는 방향으로 연결된 다른 노드 자식 노드는 하나의 부모 노드를 가진다.부모 노드(상위 노드) 루트 노드를 향한 방향으로 연결된 또 다른 노드 부모 노드는 여러 개의 자식 노드를 가진다.리프 노드(말단 노드) 더 이상 자식 노드를 갖지 않는 트리의 마지막 노드.엣지(간선) 노드를 연결하는 선서브 트리(하위 트리) 노드 하나와 그 자식 노드들로 구성된 트리순회(Traversal) 트리를 탐색하는 과정 노드에는 데이터를 저장하며 이때 저장된 데이터를 식별하는데 쓰이는 키와 저장된 데이터인 값을 포함할 수도 있..

CS/자료구조 2024.07.22

자료구조 기초 - 선형 데이터 구조

데이터 구조가 선형이라는 것은 데이터 구조를 구성하는 요소들이 서로 인접해 순차적인 방식으로 정렬되어 있음을 뜻한다. 배열과 리스트는 가장 일반적인 선형 데이터 구조다. 거의 모든 데이터 구조가 배열이나 리스트에서 파생되었거나 어떤 방식으로든 배열과 리스트를 사용하기 때문에 범용적이다. 배열 배열 내의 요소들은 순차적 또는 연속적으로 메모리에 정렬되어 있어 배열 요소들을 임의의 순서로 읽을 수 있다. 그러나 요소들의 순차적 구성 때문에 배열에서 데이터를 추가하거나 삭제할 때는 배열 내 다른 데이터의 순서를 다시 매겨야 하므로 처리하는데 많은 시간이 걸린다.  배열에 저장된 각각의 자료를 요소, 요소에 매겨진 숫자를 인덱스라고 한다. 요소들은 보통 쉼표로 구분한다. 1차원 배열 - 배열의 요소에 접근할 때..

CS/자료구조 2024.07.19

자료구조 기초 - 메모리

동양북스의 『코드 없는 알고리즘과 데이터 구조』를 읽고 정리한 내용입니다. 데이터 구조와 알고리즘은 서로 다른 개념이면서 상호 보완적이다. 데이터 구조는 알고리즘이 다루는 데이터를 구성하며, 알고리즘이 데이터를 처리하고 사용자가 원하는 완전한 정보를 산출하는 과저에서 필요한 부분을 제공한다. 컴퓨터 메모리컴퓨터가 처리 중이거나 처리를 끝낸 데이터를 저장할 수 있는 공간컴퓨터의 저장 공간 데이터 구조는 사용 가능한 자원을 효과적으로 관리하기 위해 존재하며 그 자원 중 하나가 메모리.컴퓨터 메모리는 피라미드 형태의 적층 구조다. 빠름 | 레지스터 ||| 캐시 메모리 |||   메인 메모리   |||    하드 디스크    | 느림 저장장치(SSD, HDD, 디스크 저장장치) - 저장되어 있는 데이터가 메인 ..

CS/자료구조 2024.07.18

알고리즘 기초

재귀 함수실행 도중 자기 자신을 호출하는 함수.최대 재귀 깊이(Maximum recursion depth)재귀 함수가 자기 자신을 호출 하는 횟수가 늘어날수록 컴퓨터의 가용 메모리 공간은 점점 줄어든다. 컴퓨터의 메모리에는 한계가 있으므로 결국 자기 자신을 호출하는 횟수의 한계인 최대 재귀 깊이를 초과해 스택 오버플로우가 발생할 수 있다. 분할 정복 알고리즘(Divide and Conquer Algorithm)큰 문제를 여러 개의 작은 문제로 나누어 해결하고 결과를 결합해 하나의 해결 방법을 얻는 알고리즘. 탐욕 알고리즘(Greedy Algorithm)실행되는 순간마다 최상의(가장 적합한) 결정을 내리는 알고리즘.단, 매 순간 최선의 결정을 하더라도 결과적으로 전체에 대한 최적의 결정인지는 장담할 수 없..

CS/알고리즘 2024.07.18

20240417 DB

Unity json 설치 패키지 매니저 왼쪽 + 클릭, add pakage by name으로 com.unity.nuget.newtonsoft-json 설치 xampp의 htdocs 폴더가 서버. 그 안에 php 파일을 넣어두어야함 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; public class Login : MonoBehaviour { private string loginUri = "http://127.0.0.1/login.php"; void Start() { StartCoroutine(LoginCoroutine("Kim", "9999")); /*Deb..

20240417 DB 기초

게임 세이브 시스템Zork: The Great Underground Empire - Part 1  (1980, Infocom, PC)The Legend of Zelda (1986, Nintendo, NES) 오프라인 데이터 관리TEXT - 편함, 가독성 낮음XML - 호환성 좋음, 복잡성, 중복 문제있음JSON - XML과 비슷Excel - 접근성 좋음, 호환성 안좋음(윈도우만 가능)CSV -  Excel보다 가볍고 적용하기 좋음 PlayerPrefs(Player Preference) with Unity - 옵션같은거 저장 (점수 정도만, 큰 데이터에는 부적합) 온라인 데이터 관리C-ISAM( C-Indexed Sequential Access Method ) - 색인 순차 접근 방식, 단순한 파일 시스템..

20240408 네트워크

네트워크 계층IPv4 (Internet Protocol Version 4) -> IPv6IP 주소 (32bit, 8bit * 4)ARP (Address Resolution Protocol, 주소 결정 프로토콜)서브넷 마스크 (Subnet Mask)게이트웨이(Gateway) 전송 계층(Transport Layer)Port(16bit 부호없는 숫자)사용자 포트 or 등록 포트, 시스템 포트 or 예약 포트, 동적포트소켓(Socket)전송제어 프로토콜 (TCP)정밀, 느림맞았는지 안맞았는지6사용자 데이터그램 프로토콜 (UDP)빠름, 비교적 덜 정밀실시간으로 계속 갱신되는 점수17데이터그램 혼잡 제어 프로토콜 (DCCP)  33스트림 제어 전송 프로토콜 (SCTP)  132 응용 계층DHCP동적 호스트 설정 프..

CS/네트워크 2024.04.08
반응형