목록분류 전체보기 (109)
행복을 담는 블로그
트리 (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. 회원가입 기능 ..
맨날 footer 하단 고정하는 방법 까먹어서 정리하기 위해서 올림!!1. fixed로 하단 고정하기footer { position: fixed; bottom: 0px; width: 100%; height: 5rem;}처음에는 footer는 position:fixed로 하단에 박아버린다고 생각했다.근데 그렇게 했더니, 이렇게 컨텐츠가 있을 경우, footer 안 쪽으로 먹혀버리는 현상이 발생했다.fixed로 박을 경우, 다른 값들과 관계없이, 화면의 길이가 늘어나더라도(=스크롤의 길이가 늘어나는 경우) 가장 하단 부분에 박히는 문제가 발생하였다. 2. absolute 사용하기다음으로는 position : absolute를 사용하였더니, 상대 위치에 따라 중간 지점에 고정되어 버리는 문제가 발생..
MySQL을 활용하여 데이터베이스를 연결하고 있는데 계정에 접근할 수 없다고 에러가 계속 떠서 계정 확인 및 비밀번호 변경을 시도해보았다.1. 터미널에서 mysql 접근하기맥북을 사용하다보니, 구글링 했을 때 나왔던$ mysql -u root -p이 명렁어로는 command not found: mysql 에러가 계속 발생을 해서 다른 명렁어를 통해 mysql이 있는 폴더로 접근 후 명령어를 실행했다.cd /usr/local/mysql/bin./mysql -u root -p이 명령어를 사용하니 root 계정 비밀번호롤 치라는 화면이 떴다. 2. 계정 존재하는 확인하기먼저 해당 계정의 비밀번호를 변경하기 전에 계정이 존재하는지부터 확인해보자.SELECT User, Host FROM mysql.user WHE..
가끔 백준 사이트 문제를 풀다보면 Scanner로 입력값을 받을 경우, 시간 초과가 나는 경우가 있어서 BufferedReader와 StringTokenizer 사용법에 대해서 간단하게 정리해보고자 한다.(맨날 버퍼드리더 쓰는 법 까먹어서 내가 보려고 쓰는 글...)Scanner v.s. BufferedReader의 차이1. Scanner가장 처음 입력을 받기 위해 알게된 Scanner 클래스이다.java.util에 속해있는 클래스이다.import java.util.Scanner;public class Input { public static void main(String[] args) { // 1. java.util의 Scanner 클래스를 import 해와서 선언하기 Sc..