이카's
반응형
article thumbnail
자료구조 - 힙(Java 구현)
카테고리 없음 2023. 6. 22. 09:42

힙 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree)이다. 완전 이진 트리: 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리 즉, 힙을 이해하기 위해서는 트리에 대한 사전 지식이 필요하다. 힙은 왜 사용할까? 배열에 데이터를 넣고, 최대값과 최소값을 찾으려면 O(n) 이 걸림, 이에 반해, 힙에 데이터를 넣고, 최대값과 최소값을 찾으면, $ O(log n) $ 이 걸림, 우선순위 큐와 같이 최대값 또는 최소값을 빠르게 찾아야 하는 자료구조 및 알고리즘 구현 등에 활용됨 힙 구조 힙은 최대값을 구하기 위한 구조 (최대 힙, Max Heap) 와, 최소값을 구하기 위한 구조 (최소 힙, Min Heap)로 분류할 수 있다. 즉, 힙은 ..

article thumbnail
자료구조 - 트리(Java 구현)
SW/자료구조 2023. 6. 22. 09:40

트리 트리는 트리 모양으로 만든 자료구조이다. 즉, 모양은 트리구조지만, 내부적으로는 리스트이다. 자세히 다루자면 아래와 같다. 트리는 Node와 Branch를 이용해서, 사이클을 이루지 않도록 구성한 데이터 구조이다. 그렇다면 트리는 어디서 많이 사용되는가? 트리 중 이진 트리 (Binary Tree) 형태의 구조로, 탐색(검색) 알고리즘 구현을 위해 많이 사용됨 용어 트리를 공부하다보면 용어가 많이 나와 이를 정리해 보았다. Node: 트리에서 데이터를 저장하는 기본 요소 (데이터와 다른 연결된 노드에 대한 Branch 정보 포함) Root Node: 트리 맨 위에 있는 노드 Level: 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된 노드의 깊이를 나타냄 Parent Node..

article thumbnail
HTTP 1.0/1.1 스펙과 3가지 주제
SW/네트워크 2023. 6. 20. 00:33

HTTP HTTP의 기본적인 것이 궁금하다면 아래 링크를 확인해보자! 잘 쓴 글은 아니지만 노력하여 포스팅한 글이다! HTTP 기본 개념 이번 포스팅에서는 HTTP/1.0과 HTTP/1.1에 대해서 조금 자세히 다뤄보려고 한다. 가장 크게 3가지를 다뤄보려고 한다. 커넥션 유지 호스트 헤더 강력한 인증 절차 HTTP/1.0 문서를 받았는데 주고 받기만 해서는 너무 불편한 점이 많았다. 특히 수정해야 하는 부분에서 만큼은... 이런 불편한 점을 개선하고자 1996년 HTTP Working Group에서 사람들이 사용하던 기능을 모아 문서화를 하였다. 이를 통해 몇 가지 요청을 더 사용하게 되었다. 헤더 추가 클라이언트는 선택적 헤더 정보를 보내 서버의 구성, 서버의 인터넷 시스템 호스트 이름 또는 번호, ..

article thumbnail
Hash 해시, 해시 메커니즘, 중복 Key는?, 충돌
SW/자료구조 2023. 6. 15. 01:32

해시 해시는 Key-Value 쌍으로 저장되는 자료구조를 말한다. 자바에서는 hashMap이 Collections에 구현되어 있다. 이때 주의해야 할 점이 있는데, key는 반드시 중복되지 말아야 한다는 것이다. 해시 메커니즘 기본적인 해시는 위 그림과 같이 Hash function을 통해 만ㄷ르어 진다. Key-Value가 function을 거쳐 어떤 주소를 참조하게 된다. 기본적으로 인덱스 주소를 가지고, 그 주소에 value값이 링크되어 있다. 중복 key는? 해시 Key가 중복되면 어떤값이 나올까? 정답은 나중에 지정된 해시값이 나온다. 즉, 덮어쓰게 된다. 이를 충돌이라고 말한다. 기본적으로 인덱스는 value를 링크드 리스트로 포인트하고 있다. 같은 key를 가진 value가 들어오게 되면 v..

article thumbnail
시간복잡도를 자바로 구현
SW/자료구조 2023. 6. 15. 01:11

시간복잡도 시간복잡도는 알고리즘, 자료구조를 공부하게되면 접하게되면 단어이다. 그렇다면 시간복잡도는 무엇인가? 쉽게 말해 지금 내 코드의 실행 시간을 Big O (빅-오) 표기법: O(N) 표기법으로 표현을 한 것이다. 시간 복잡도 계산은 반복문이 핵심 요소임을 인지하고, 계산 표기는 최상, 평균, 최악 중, 최악의 시간인 Big-O 표기법을 중심으로 공부하면 된다. 대문자 O 표기법 및 게산 방법 입력 n 에 따라 결정되는 시간 복잡도 함수 O(1), O($log n$), O(n), O(n $log n$), O($n^2$), O($2^n$), O(n!)등으로 표기함 입력 n 의 크기에 따라 기하급수적으로 시간 복잡도가 늘어날 수 있다. O(1) < O($log n$) < O(n) < O(n $log n..

article thumbnail
HTTP의 역사 그리고...
SW/네트워크 2023. 6. 14. 15:31

HTTP의 역사 & 헤더 사실 개발자에게 HTTP는 굉장히 친숙한 단어이다. 개발을 접하게 될때, 대부분 처음에 접하는 단어가 아닐까 싶다. 그 만큼 우리들은 HTTP 단어에 많이 노출되어 있다. 그렇다면 HTTP는 어디에 있을까? 현대인이라면 인터넷을 당연히 사용할 것이고 사용하다 보면 자동으로 HTTP보다 https 가 더 많이 사용한다. https의 기초가 되는 http를 먼저 공부하면 https가 무엇인지 더 쉽게 이해할 수 있을 것이라 생각한다. HTTP란? Hyper Text Transfer Protocol로 그냥 문자가 아닌 Hyper 텍스트를 전송하는데 활용하는 프로토콜이라고 생각하면 된다. 즉, 텍스트를 주고 받고하는데, 정해놓은 규약이다. 그래서 왜 이런 규약이 생겼는데? CERN 입자..

article thumbnail
TCP/IP 4계층 모델 인데 3계층 설명 (애플리케이션 계층, 전송 계층, 인터넷 계층)
SW/네트워크 2023. 6. 13. 02:30

TCP/IP 4계층 모델 이번 포스팅에서는 TCP/IP 4계층을 알아보려고 한다. 중점적으로 다룰 부분은 어떻게 정보를 주고 받아?와 각 계층의 구조를 포스팅할 것이다.(사실 이게 전부이다.) 애플리케이션 계층 전송 계층 인터넷 계층 링크 게층 TCP/IP란? 계층을 다루기 전에 도대체 왜 이렇게 이름을 지엇는가? 라는게 궁금증으로 생긴다. 이를 이해하면 TCP/IP의 이해가 한층 쉬워질 것이라고 생각한다. TCP(Transmission Control Protocol) 우선 TCP가 왜 만들어 졌을까? 미 국방부에서 냉전시대에 알파넷 프로젝트의 주제 중 하나가 핵전쟁이 나도 살아남는 네트워크를 만드는 것이었다. 이전 시대는 회선 교환 방식에 따라 중계국이 다운되면 네트워크가 끊기기 때문이었다. 이를 해결..

article thumbnail
비즈니스 모델 설계 - Spring Assigment1 과제(feat.MySQL)
SW/Data Base 2023. 6. 12. 16:13

비즈니스에 따른 테이블 설계 이번 스프링 강의 중 과제를 제출해야 할 일이 생겼고, 블로그 작성으로 과제를 제출해야하 하여 포스팅 하게 되었다. 테이블 설계는 매우 까다롭고 어려운 작업이라고 생각한다. 이 어려운 테이블 설계를 요구에 맞춰서 커스텀 해주는 것이 이번 과제의 목표이다. 과제 내용 자체는 복잡한 로직은 아니지만, 1:N 관계와 N:N 관계를 잘 이해하고 있는지를 물어보는 과제라고 생각한다.. 요구사항 이번 과제는 크게 3가지 테이블이 유기적으로 작업한다. User Table Account Table History Table 차근차근 하나씩 만들어 보며 진행을 해보자. User Table 기본적으로 우리가 은행 계좌를 만들 경우 입력하는 정보를 러프하게 만들어 볼 생각이다. 필요한 부분을 고민..

article thumbnail
비즈니스 모델 설계 - Spring Assignment1 과제(feat.MySQL)
SW/Data Base 2023. 6. 12. 16:02

비즈니스에 따른 테이블 설계 이번 스프링 강의 중 과제를 제출해야 할 일이 생겼고, 블로그 작성으로 과제를 제출해야하 하여 포스팅 하게 되었다. 테이블 설계는 매우 까다롭고 어려운 작업이라고 생각한다. 이 어려운 테이블 설계를 요구에 맞춰서 커스텀 해주는 것이 이번 과제의 목표이다. 과제 내용 자체는 복잡한 로직은 아니지만, 1:N 관계와 N:N 관계를 잘 이해하고 있는지를 물어보는 과제라고 생각한다.. 요구사항 이번 과제는 크게 3가지 테이블이 유기적으로 작업한다. User Table Account Table History Table 차근차근 하나씩 만들어 보며 진행을 해보자. User Table 기본적으로 우리가 은행 계좌를 만들 경우 입력하는 정보를 러프하게 만들어 볼 생각이다. 필요한 부분을 고민..

article thumbnail
진화를 거듭한 자바, 스프링, 스프링부트
BE/Spring-Boot 2023. 6. 7. 14:07

자바, 스프링, 스프링 부트 자바에 봄이 왔다..! 어떻게 봄을 오게 했는지, 대단한 프레임워크라고 말할 수 있다. 앞으로 계획 커리큘럼은 스프링 부트이다. 이 차이를 분명히 알아야 개념이 흔들리지 않고, 확실히 공부 할 수 있어서 살짝 집고 넘어가려고 한다. Java 스프링, 스프링 부트에 근간이 되는 언어이다. 커피를 두고 비유하자면 원두 정도가 되는 셈이다. 원두만으로는 뭘 하기는 힘든데, 이걸 가공하여 우리가 먹을 수 있게 만든다면 커피가 되는 것이다. Spring 자바 - 스프링 이렇게 묶어서 러프하게 말한다. 하지만 스프링은 카페라고 생각하면 쉽다. 원두로 만든거긴 하지만, 원두(자바)는 아니다. 즉, 부가적인 어떤 것이 첨가되어 만들어 진 것이다. 스프링은 대부분 자바로 만들어져 있다. 하지..

article thumbnail
자료구조 - LinkedList
카테고리 없음 2023. 6. 7. 01:34

링크드 리스트 연결 리스트라고 한다. 배열하고의 차이점으로 순차적으로 연결된 공간에 나열하는 구조라면, 링크드 리스트는 떨어진 곳에 데이터를 화살표로 연결하여 관리하는 구조이다. 말 그대로 가장 큰 특징은 포인터라는 개념이다. 아래 코드르 보며 이해를 해보자. 생성자 구현 기본적으로 node라는 객체를 연결해 주는 코드를 만들 것이다. private Node head; public MyLinkedList() { this.size = 0; this.head = null; // dummy head node } Node 구현 링크드 리스트안에 구현을 했지만 따로 구현해도 크게 문제가 없다. private class Node { T data; Node next; Node(T data) { this.data = ..

article thumbnail
자료구조 - Stack
SW/자료구조 2023. 6. 7. 01:33

스택 스텍은 많은 분야에서 사용되고 있다. (게임) 스텍이란 마지막에 넣은 데이터를 가장 먼저 추출하는 자료구조이다. 즉, LIFO를 말하며, 주로 컴퓨터 내부 프로세스 구조의 함수 동작 방식이 이걸로 구현되어 있다. 또한 우리가 자주 사용하는 컴퓨터 뒤로가기도 스텍구조 이다. 스텍 사용법 자바 내부라이브러리에 스텍이 구현되어 있다. import java.util.Stack; Stack stack = new Stack(); //int형 스택 선언 Stack stack = new Stack(); //String형 스택 선언 util에 있는 stack이 구현되어 있으며, import시 사용할 수있다. 이미 내부에 다양한 메서드가 구현되어 있다. 추가 push() push(value) 메서드를 활용하면 된다...

반응형