목록BackEnd (7)
행복을 담는 블로그
트리 (Tree)비선형 자료구조계층 관계, 상하 관계 표현, 부모자식 관계원소들 간에 1:N 관계를 가지는 자료구조원소들 간에 계층 관계를 가지는 계층형 자료구조상위 원소에서 하위 원소로 내려가면서 확장되는 트리(나무) 모양의 구조 정의: 한 개 이상의 노드로 이루어진 유한 집합이다.사이클이 없는 연결 그래프단순 경로가 하나인 트리 트리의 조건 3가지1. 연결 그래프여야 한다. == 경로가 하나 이상2. 사이클이 없어야 한다. == 경로가 둘 미만 => 두 조건을 만족한다면, 경로는 only 하나만 존재.3. (특징) 노드 수 == 간선 수 + 1노드 : 데이터 하나하나를 이루는 단위루트 (Root) : 노드 중 최상위 노드나머지 노드 : n개의 분리 집합 T1, … , TN으로 분리될 수 있다.부..
💡그래프(Graph)란?: 정점(Vertex)와 간선(Edge)의 집합그래프 특징아이템(사물 또는 추상적 개념)들과 이들 사이의 연결 관계 표현정점들의 집합과 이들을 연결하는 간선들의 집합으로 구성된 자료구조선형 자료구조나 트리로 표현하기 어려운 M:N의 관계를 표현한 것V개의 정점을 가지는 그래프는 최대 V * (V-1) / 2 간선이 가능그래프 종류무향 그래프(Undirected Graph) & 유향 그래프(Directed Graph)가중치 그래프 (Weighted Graph)방향도 있으면서 가중치 그래프순환 그래프 (Cycle Graph)비 순환 방향 그래프 (DAG, Directed Acyclie Graph)1. 무향 그래프(Undirected Graph) & 유향 그래프(Directed Gra..
자료구조를 알고, 알고리즘 문제를 풀 때 시간 복잡도 계산을 한다고 하는데, 시간 복잡도는 무엇이고 어떻게 계산하는지에 대해서 먼저 간단하게 알고 넘어가보도록 하자.https://hyun0zinlog.tistory.com/112 [자료구조] 알고리즘, 시간 복잡도 / 공간 복잡도시간 복잡도 (Time Complexity)?: 프로그램을 실행하는데 실제로 시간이 얼마나 걸리느냐?를 나타내는 척도를 의미한다.시간을 측정하는 2가지 방법실제 소요되는 시간을 측정 : 컴퓨터의 프로그램이hyun0zinlog.tistory.com 그렇다면 ArrayList에서의 시간 복잡도는 어떻게 될까?위 그림과 같이, size가 4인 array에 1,2,3,4 각각을 하나씩 추가할 경우, 마치 O(1)처럼 보인다.하지만, 5라..
JWT 인증(Authentication) / 인가(Authorization)인증(Autentication) : “신원을 확인하는 과정”JWT 토큰이 유효한지 확인하는 과정User DB에서 이 사람이 회원가입 한 사람이 맞는지 확인하는 과정인가(Autentication) : “접근을 허가 또는 거절하는 과정”SpringSecurity Context의 Autentication 객체를 확인하여 접근을 허가할지 말지 선택하는 과정지금 들어오는 요청을 이 사람이 해도 되는지 확인하는 과정ex) userId=4인 사람이 userId=5인 사람 페이지 가서 todo를 등록할 수 없게 하기출처 [Spring Security / JWT] Spring Security - JWT 토큰 인증/인가발행되는 Token의 타입Be..
미니 프로젝트를 시작하면서,,, 다시 기록을 시작해보고자 한다. 이번 프로젝트에서는 백엔드 기능은 Spring Boot로 구현하고, 프론트는 Vue로, DB는 MySQL을 활용하여 진행하였다. Spring Boot를 배우면서 로그인/회원가입 기능을 세션으로 구현하는 것부터 시작하였는데, 이부분에 대해서 작성해보고자 한다. 이후에는 세션으로 진행한 로그인을 JWT 토큰으로 로그인하는 기능으로 수정하였다. 프로젝트 시작에 앞서, 자동으로 Getter, Setter, 생성자를 추가해주는 Lombok이라는 의존성을 pom.xml에 추가했는데,결과적으로 getter/setter가 생성이 안 되어서 회원가입 기능이 제대로 구현되지 않았다.이부분에 대해서는 추가로 공부해보고 진행해야 할 것 같다.1. 회원가입 기능 ..
백준 문제를 풀다가 어려운 문제가 전혀 아닌데 왜 정답이 아니지 라고 생각하다 데이터 타입 크기의 중요성에 대해서 알게 되었다.문제를 보면 N 과 M을 각각 정수로 값을 입력 받고, 이후에 그 차이를 구하라는 문제였다. 우선 N과 M을 Scanner로 정수를 입력 받는다.Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc.nextInt();이후 Math.abs() 메서드를 활용하여 절대값을 구해서 그대로 출력만 하면 되는데, 계속 정답이 아니라고 떴다. import java.util.Scanner;public class Main { public static void main(String[] args) { Sca..
백준 / SWEA 알고리즘 문제 풀 때, 입력값 받는 방법프로그래머스로 문제를 풀 때와 다르게, 백준이나 SWEA를 통해 알고리즘 문제를 풀 경우, input 값을 직접 입력하고 받아와서 문제를 풀어야 하는 형태로 이루어져 있다.java를 처음 배우는 입장에서 처음 알고리즘 문제를 풀고자 했을 때 이 부분부터 굉장히 막막해서 진도가 안 나갔다는...Scanner를 먼저 import를 해와한다.Scanner sc = new Scanner(System.in);그 다음 값을 입력 받고 싶을 때, 다음과 같이 Scanner로 부터 변수 형태에 맞게 값을 입력할 수 있다. 1. 정수를 입력 받을 때는 nextInt() 를 사용한다.int N = sc.nextInt(); 2. 문자열 입력next() v.s. n..