이진 트리(Binary Tree)
·
알고리즘/자료구조
이진 트리 정의트리 중, 모든 노드의 차수(degree)가 2가 넘지 않는 것을 이진트리라 한다.유한 개의 노드들의 집합으로서노드 수가 0이거나 하나의 root 노드와 왼쪽 서브트리, 오른쪽 서브트리로 구성되어 있으며, 각 서브트리는 다시 이진트리다. 이진트리 종류편향 이진 트리 (Skewed Binary Tree): 트리의 노드가 왼쪽/오른쪽 중 한 쪽으로만 치우쳐진 트리이다.포화 이진 트리 (Full Binary Tree): 트리의 깊이가 k일 때, 2^k-1 개의 노드를 가진 이진트리이다. (= 트리의 깊이까지 노드가 모두 꽉 차 있는 상태의 트리)완전 이진 트리 (Complete Binary Tree): 마지막 레벨을 제외한 모든 레벨은 노드로 꽉 차 있으며, ..
트리(Tree)
·
알고리즘/자료구조
트리의 정의사이클 없이 모든 정점이 연결되어 있는 그래프이다. (따라서 정점이 V개면 간선의 개수는 V-1개)노드(정점)와 노드를 연결하는 링크(간선)들로 구성되어 있다.보통 루트 노드가 존재하는 트리를 트리라 부르고 사용한다.Root(루트)라고 불리는 노드가 하나 존재한다.루트 노드는 0개 이상의 자식 노드를 가진다.나머지 노드들은 n(>=0)개의 서브 트리(부분집합)로 이루어져있다.트리 안에 서브 트리가 있고, 서브 트리 안에 또 서브 트리가 있는 재귀적 자료구조이다. 위 이미지에서 루트 노드는 2이며, 7과 5를 자식 노드로 가진다.각 7과 5노드를 시작으로 서브트리가 구성되어 있으며, 각 서브트리에서 7과 5는 루트 노드의 역할을 한다. 트리는 자료의 계층적 구조..
큐(Queue) / 원형큐(Circular Queue)
·
알고리즘/자료구조
큐의 정의데이터의 삽입과 삭제가 서로 다른 곳(top,rear)에서 발생하는 선형구조이다.- 데이터 삽입 발생 위치 : rear- 데이터 삭제 발생 위치 : front 가장 먼저 들어온 데이터를 front가 참조하며 데이터 삭제 시 가장 먼저 삭제된다.이를 FIFO(First In First Out) 구조라고 한다. 큐의 연산enqueueQueue의 가장 뒤쪽(rear)에 데이터를 삽입한다.dequeueQueue의 가장 앞쪽(front)의 데이터를 삭제하고 반환한다.peekQueue의 가장 앞쪽(front)의 데이터를 반환한다.isFullQueue가 꽉 차있는지 확인한다.isEmptyQueue가 비어있는지 확인한다. 큐의 구현 큐의 구현은 스택과 마찬가지로 ..
스택(Stack)
·
알고리즘/자료구조
스택의 정의데이터의 삽입과 삭제가 top이라 불리는 한쪽 끝에서만 발생하는 선형 구조이다. 가장 늦게 들어간 데이터가 가장 먼저 삭제되고, 가장 먼저 들어간 데이터가 가장 늦게 삭제된다.이를 LIFO(Last In First Out)구조 , 혹은 FILO(First In Last Out)구조라고 할 수 있다.  스택의 연산push스택의 가장 위(top)에 데이터를 삽입한다.pop스택의 가장 위(top) 데이터를 삭제한다.peek스택의 가장 위(top) 데이터를 반환한다.isEmpty스택이 비어있는지 확인한다.isFull스택이 꽉 차있는지 확인한다.getSize스택에 현재 저장된 데이터의 수를 반환한다. 스택의 구현스택을 구현하는 방법에는 두 가지 방법이 있다.배..
시간복잡도, Big O
·
알고리즘/study
Big O : OBig O describes an upper bound on the time.학문적으로, Big O는 시간의 상한선을 의미한다.사람은 모두 최대 100살까지 산다고 가정하고, 이 때 사람의 나이를 x라고 하자.이 때 x따라서 사람의 나이를 Big O로는 O(N), O(N^2), O(N^3) 모두로 나타낼 수 있다.이를 다시 알고리즘 관점으로 가져오면 실제 런타임 속도는 Big O로 표현한 속도보다 작거나 같다는 것을 의미한다. Big Omega : ΩBig omega is the equivalent concept but for lower bound.학문적으로, Big Omega는 시간의 하한선을 의미한다.다시 사람의 나이 비유를 빌려오자면, Big omega로는 Ω(N..
[Java] 문자열(String) 내장 함수 정리
·
프로그래밍 언어/Java
length()문자열의 길이를 반환한다.compareTo()int compareTo(String str)str과 현재 인스턴스의 문자열의 내용을 사전순으로 비교한다.현재 인스턴스가 사전순으로 더 이전이면 음수를, 이후면 양수를, 두 문자열의 내용이 같다면 0을 반환한다. String str1 = "apple"; String str2 = "banana"; System.out.println(str1.compareTo(str2)); // -1 출력chatAt()char chatAt(int index)인스턴스 변수로 가진 char[] value에서 해당 index의 문자를 반환한다.concat()String concat(String str)(..
[Java] CharSequence란?
·
프로그래밍 언어/Java
String 내장 함수를 정리하다 CharSequence를 발견했다. 생성시 ""를 사용하는 것은 String과 같은데, CharSequence란 무엇이며 String과 어떻게 다른지 알아봤다. Interface CharSequence는 클래스가 아니라 인터페이스이다. 그리고, 이 인터페이스를 구현한 클래스로는 바로 String, StringBuffer, StringBuilder 등이 있다. 즉 문자열로 사용하는 클래스의 구현 토대인 것이다. 따라서 CharSequence는 아래의 모든 방법으로 생성 가능하며, 위의 모든 클래스를 담을 수 있다. CharSequence charSequence = "hello"; CharSequence charSequence = new StringBuffer("hello"..
[Java] 문자열(String) 클래스 정리
·
프로그래밍 언어/Java
문자열(String)1. 변경 불가능한 클래스String 클래스는 문자열을 저장하기위해 char[] value를 인스턴스 변수로 정의하고 있다.인스턴스 생성시 입력받는 문자열이 value에 저장되는데, value에 한 번 저장된 배열은 읽기만 가능하며 변경할 수 없다.2. 문자열 비교String 클래스 생성자를 이용하여 문자열을 만든 경우, new 연산자에 의해 메모리 할당이 이루어진다.따라서 항상 새로운 String인스턴스가 생성되어 서로 다른 메모리값을 가진다. 하지만, 문자열 리터럴의 경우 같은 내용의 문자열 리터럴을 재사용한다.아래 예시를 보자.String str1 = new String("apple");String str2 = new String("apple");Strin..
[Java] 스트림(Stream)
·
프로그래밍 언어/Java
Java에서의 입출력사용자가 키보드로 입력한 문자를 받아와 모니터에 보여주려면 어떻게 해야할까?만약 사용자가 특정 문서를 인쇄하기 위해 인쇄 버튼을 누른다면 이를 프린터를 어떻게 인쇄할까? 이처럼 프로그램에서 데이터를 받아오거나 데이터를 특정 장치에 보내줘야 할 때, 바로 스트림을 이용한다. 위의 경우에서는 키보드로 입력한 문자를 받아올 때 입력 스트림을, 해당 문자를 화면에 나타낼 때 출력 스트림을 이용한다.또 사용자가 인쇄를 요청한 경우에는 인쇄를 담당하는 프로그램이 해당 문서의 내용을 입력 스트림을 통해 받아오며, 출력 스트림을 통해 프린터기로 데이터를 전송한다. 스트림이란 데이터를 교환하려는 두 대상을 연결하고, 데이터를 전송할 수 있는 통로 역할을 한다.Stream의 특징..
개발 환경 setting
·
Project/MVC project
Java 기존에 설치되어 있던 java version 11을 그대로 사용한다. Tomcat https://tomcat.apache.org/tomcat-9.0-doc/index.html Apache Tomcat 9 (9.0.70) - Documentation Index This is the top-level entry point of the documentation bundle for the Apache Tomcat Servlet/JSP container. Apache Tomcat version 9.0 implements the Servlet 4.0 and JavaServer Pages 2.3 specifications from the Java Community Process, and includes ma..
[FBTB] 4. 로그인 유지 기능 구현 (UI)
·
Project/FromBookToBook
웹 전체적인 UI도 좀 더 웹페이지 같게 바꾸었다. 여전히 아직 뭔가 수상한 웹처럼 보이지만 그래도 그 전보다는 나아진 것 같다. 로그인 완료시 헤더에 로그인 중인 사용자의 이름이 뜬다. 계정을 선택해서 성공적으로 로그인 되면 다시 이전 화면으로 돌아온다. 로그인 된 경우 local storage를 살펴보면 access token과 로그인 중인 사용자의 email, name 등이 들어가있는 것을 확인할 수 있다. 아직 하나도 안 꾸몄다 ㅋ 이렇게 로그인 유지 기능 구현 끝 ~~~~
[FBTB] 4. 로그인 유지 기능 구현 (OAuth2/JWT 관련 API)
·
Project/FromBookToBook
관련 도메인 OAuth2UserInfo package com.frombooktobook.frombooktobookbackend.security.user; import java.util.Map; public abstract class OAuth2UserInfo { // 키-값 쌍의 일반 Map에서 사용자의 필수 세부 사항을 가져오는데 사용 protected Map attributes; public OAuth2UserInfo(Map attributes) { this.attributes = attributes; } public Map getAttributes() { return attributes; } public abstract String getId(); public abstract String getEm..