전체 글

Spring/스프링5 프로그래밍 입문

Chapter 13. 세션, 인터셉터, 쿠키

로그인 처리를 위한 코드 준비 AuthInfo(로그인 성공 후, 인증 상태 정보를 세션에 보관할 때 사용할 클래스) package spring; import lombok.Getter; import lombok.RequiredArgsConstructor; @Getter @RequiredArgsConstructor public class AuthInfo { private final Long id; private final String email; private final String name; } Member(암호 일치 여부 메소드 추가) package spring; import java.time.LocalDateTime; public class Member { private Long id; private ..

CodeStates

[SEB BE 44] Section 2 회고록

코드스테이츠 백엔드 과정 Section 2 후기 ??: section2부터는 열심히 할거야! 1시간 후 ?? : 드르렁 ~ 선천적으로 잠이 드럽게 많은 나. 오후에 몰아치는 잠을 버틸 수 없었다.. 낮잠 잘 시간에 스프링 공부를 더 했으면 진도는 훨씬 빨랐을 텐데 ㅠㅠㅠ 주저리주저리 아무튼, 코드스테이츠 section2에 대해 회고록을 작성해볼까 한다. 코드스테이츠에서 권장하는 KPT 회고 기법으로! KPT란?? KPT회고는 여러 회고 방법 중 팀 회고 방식으로 많이 알려져 있는 기법이다. K(keep)P(problem)T(try)가 뜻하는 바는 위의 그림과 같다. KPT회고를 작성하는 순서는 아래와 같다. KPT를 기반으로한 개인 회고 목표 상기하기 Keep, Problem 작성하기 Try 작성하기 우..

Algorithm/PTUStudy

11주차. 후위표기식2

1935. 후위표기식2 https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 📌문제 - 예제1 📝입력 5 ABC*+DE/- 1 2 3 4 5 💻출력 6.20 📌풀이 알파벳이 들어왔을 때, Stack에 push해주고 연산자를 만나면 2번 pop해서 연산을 해주면 되는데 이때 중요한 점이 2번째 pop해서 얻어온 값을 앞에 배치하여 연산해야 한다는 점이다.(코드를 보면 이해가 쉬울 것입니다.) 이 점만 파해했다면 어렵지 않게 풀 수 있는 문제..

Spring/스프링5 프로그래밍 입문

Chapter12. MVC 2: 메시지, 커맨드 객체 검증

*Chapter11은 jsp에 대한 내용을 다루므로 블로깅은 스킵 태그로 메시지 출력하기 문자열을 별도 파일에 작성하고 JSP 코드에서 이를 시용하려면 다음 작업을 하면 된다. 문자열을 담은 메시지 파일을 작성한다. 메시지 파일에서 값을 읽어오는 MessageSource 빈을 설정한다. JSP 코드에서 spring:message 태그를 사용해서 메시지를 출력한다. 예제 메시지 파일 작성(lable.properties) member.register=회원가입 term=약관 term.agree=약관동의 next.btn=다음단계 member.info=회원정보 email=이메일 name=이름 password=비밀번호 password.confirm=비밀번호 확인 register.btn=가입 완료 register.d..

Algorithm/PTUStudy

11주차. 오등큰수

17299. 오등큰수 https://www.acmicpc.net/problem/17299 17299번: 오등큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 📌문제 - 예제1 📝입력 7 1 1 2 3 4 2 1 💻출력 -1 -1 1 2 2 1 -1 📌풀이 풀이 법은 오큰수와 비슷하다. 다만 각 숫자가 수열에서 몇번 나오는지 체크해줘야 했기때문에 Map을 활용했다. 원래는 Map에 저장한 등장 횟수를 토대로 다시 배열을 만들 생각이었는데, 다시 생각해보니까 그럴 필요가 없었다. map에서 바로 get 해오면 되니까 말이다. 마찬가지로 스택에는 ..

Algorithm/자료구조 개념

[자료구조] 03. 해시 테이블

해시(Hash)란? 💡해시: 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값이다. 해시를 이용하면 즉시 저장하거나 찾고자 하는 위치를 참조할 수 있으므로 더욱 빠른 속도로 처리할 수 있다. Key와 Value 한 쌍으로 존재하고 key값이 배열의 인덱스로 변환되기 때문에 시간복잡도가 O(1)에 수렴하게 된다. 💡해시 함수: 임의 크기 데이터를 고정 크기 값으로 매핑하는 데 사용할 수 있는 함수를 말한다. 성능 좋은 해시 함수들의 특징은 다음과 같다. 해시 함수 값 충돌의 최소화 쉽고 빠른 연산 해시 테이블 전체에 해시 값이 균일하게 분포 사용할 키의 모든 정보를 이용하여 해싱 해시 테이블 사용 효율이 높을 것 해시 테이블이란? 💡해시 테이블: (key, value) 한쌍으로 데이터를 ..

Algorithm/알고리즘 개념

[알고리즘] 최소 신장 트리 - Prim, Kruskal Algorithm(프림, 크루스칼 알고리즘)

최소 신장 트리(Minimum Spanning Tree)란? 💡최소 신장 트리: 그래프에서 모든 정점에 대해 최소한의 연결만을 남긴 그래프이다. 즉 간선의 가중치 합이 가장 작은 트리를 뜻한다. 사이클이 존재하지 않아야 한다. 최소 신장 트리를 찾는 알고리즘으론 크루스칼 알고리즘, 프림 알고리즘이 있다. 이 알고리즘은 그리디 알고리즘 기법을 활용한 알고리즘이다. 프림 알고리즘은 바이너리 힙을 이용하는 경우 O(E+VlogV)의 시간 복잡도를 가지며, 크루스칼 알고리즘은 경로 최적화를 이용하지 않는 경우 O(ElogV), 경로 최적화를 이용하는 경우 O(Elog∗V)의 시간 복잡도를 가지기 때문에, 그래프의 간선 밀도를 고려하여 최적의 알고리즘을 선택하는 것이 필요하다. 크루스칼 알고리즘(Kruskal A..

Algorithm/알고리즘 개념

[알고리즘] Union-Find Algorithm (유니온 파인드 알고리즘)

유니온 파인드 알고리즘이란? 💡유니온 파인드 알고리즘: 상호 배타적 집합, Disjoin-set(서로소 집합) 이라고도 부른다. 여러 노드가 존재할 때 어떤 두 개의 노드를 같은 집합으로 묶어 주고, 어떤 두 노드가 같은 집합에 있는지 확인하는 알고리즘이다. 왜 이름이 유니온 파인드인가? 유니온 파인드 알고리즘은 두가지의 연산을 진행한다. 이 연산 과정을 Union, Find라고 부른다. Union: 서로 다른 두 개의 집합을 하나의 집합으로 병합하는 연산을 말한다. 이 자료구조에서는 상호 배타적 집합만을 다루므로 Union 연산은 합집한 연산과 같다. Find: 하나읜 원소가 어떤 집합에 속해있는지를 판단한다. 크루스칼 알고리즘과 프림 알고리즘을 알기 위해선 유니온 파인드 알고리즘을 알아야 한다. 유니..

Algorithm/알고리즘 개념

[알고리즘] Dijkstra Algorithm (다익스트라 알고리즘)

다익스트라 알고리즘이란? 💡다익스트라 알고리즘: 데이크스트라 또는 다익스트라 알고리즘이라 불리는 이 알고리즘은 음의 가중치가 없는 그래프에서 최단 경로 및 최단 거리를 찾는 알고리즘이다. 매번 최단 경로의 정점을 선택하기 때문에 그리디 알고리즘 기법을 활용한 예라고 볼 수 있다. 중요한 점은 음의 가중치가 없을 때만 사용이 가능하다는 점이다. 인접행렬을 사용하는 경우 O(n^2)의 시간복잡도를 가지지만, 우선순위 큐(=힙 트리)등을 이용한다면 O((v+e)logV)(V는 정점의 개수, E는 한 정점의 주변노드)의 시간복잡도를 가진다. 음의 가중치를 가지는 간선이 있으며, 가중치 합이 음인 사이클이 존재하지 않는 경우 벨만-포드 알고리즘을 사용할 수 있다. 가능한 적은 비용으로 가장 빠르게 해답에 도달하는..

Spring/스프링5 프로그래밍 입문

Chapter 10. 스프링 MVC 프레임워크 동작 방식

* Chapter 9는 다른 블로그를 참고하여 설정한 상태이기 때문에 스킵합니다. 스프링 MVC 핵심 구성 요소 spring bean 이라 표시한 것은 스프링 빈으로 등록해야하는 것을 의미하며, 회색 배경을 가진 구성요소는 개발자가 직접 구현해야하는 요소이다. DispatcherServlet은 모든 연결을 담당한다. 웹 브라우저로부터 요청이 들어오면, 그 요청을 처리하기 위해 컨트롤러를 검색하는데, 이때 HandlerMapping이라는 빈 객체에 컨트롤러 검색을 요청한다. 웹 요청 경로가 /hello 라면 등록된 컨트롤 빈 중에서 '/hello' 요청 경로를 처리할 컨트롤러를 리턴한다. 컨트롤러 객체를 받은 DispatcherServlet은 HandlerAdapter 빈에게 요청 처리를 위임한다. Han..

지구우중
개발 메모용 블로그