전체 글
-
[기능구현#2] 예외처리프로젝트/게시판 프로젝트 2024. 11. 20. 20:28
예외처리 흐름도기본적인 Exception 흐름도Controller에서 Exception 발생Tomcat으로 전달에러 코드 별로, 지정된 Mapping으로 다시 Controller로 전달전달된 페이지를 View 예외처리 방법1. Exception을 직접 구현하여, mapping Controller로 진행2. Spring이 자동으로, 에러코드별 html이 있다면 해당 html로 view 진행3. API형식일 경우, json 형태로 (혹은 다른 방식으로) 에러 코드 및 메시지 전달현재 프로젝트에 적용되어 있는 Exception 방식1번 방법으로, Exception을 직접 구현하여 원하는 Html로 맵핑 작업 예외처리 구현WebServerFactoryCustomizer를 통한 구현 (@Override cust..
-
[기능구현#1] 로그인 기능프로젝트/게시판 프로젝트 2024. 11. 20. 20:12
로그인 서비스 흐름도로그인 인증)- 로그인 인증의 경우, Filter와 Interceptor를 이용하여 구현할 수 있다- Filter의 경우, spring의 Distpatcher에 들어가기 전에 필터링이 가능하므로 주로 Filter에서 로그인 인증이 일어난다현재 프로젝트 적용1차 로그인 인증 (Filter)Session값의 유무를 통해, Session을 가지고 있으면 Filter 통과2차 로그인 인증 (Interceptor)Session 값 유무 판단 + URL 변경을 통한 사용자 인증을 막고자 정규표현식을 이용한 필터링 진행ex) http://localhost/members/test1 -> http://localhost/members/admin (이동 방지) 로그인 인증 방법1) JWT2) Sessio..
-
[BFS] 백준 1167번 (트리의 지름)책/DoIt 알고리즘 코딩테스트 2024. 11. 20. 16:13
문제트리의 지름이란, 트리에서 임의의 두 점 사이의 거리 중 가장 긴 것을 말한다. 트리의 지름을 구하는 프로그램을 작성하시오.트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 매겨져 있다.먼저 정점 번호가 주어지고, 이어서 연결된 간선의 정보를 의미하는 정수가 두 개씩 주어지는데, 하나는 정점번호, 다른 하나는 그 정점까지의 거리이다. 예를 들어 네 번째 줄의 경우 정점 3은 정점 1과 거리가 2인 간선으로 연결되어 있고, 정점 4와는 거리가 3인 간선으로 연결되어 있는 것을 보여준다. 각 줄의 마지막에는 -1이 입력으로 주어진다. 주어지는 거리..
-
[BFS] 백준 2178번책/DoIt 알고리즘 코딩테스트 2024. 11. 19. 15:09
https://www.acmicpc.net/problem/2178문제N×M크기의 배열로 표현되는 미로가 있다.101111101010101011111011미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다.(조건)첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수..
-
[BFS + DFS] 백준 1260번책/DoIt 알고리즘 코딩테스트 2024. 11. 18. 15:51
문제그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다.첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 문제분석DFS와 BFS를 차례대로 구현하면 된다.주의할점은 정점번호가 작은 것을 먼저 방문하므로, 인접 인덱스를 정렬을 해서 방문할 순서를 정해야..
-
[BFS] 너비 우선 탐색알고리즘 2024. 11. 18. 15:08
너비우선탐색(BFS) 이란?그래프를 완전탐색하는 방법 중 하나로,시작 노드에서 시작해 가장 가까운 노드를 먼저 탐색하면서 탐색하는 알고리즘FIFO 구조로 탐색을 하며, 목표 노드에 도착하는 경로가 여러개 일 경우 최단경로를 보장한다.시간복잡도 O(노드 수 + 에지 수)로 이루어져 있다. 너비우선탐색의 핵심이론DFS와 마찬가지로 방문한 노드의 경우 체크하는 배열이 필요.또한, 인접 리스트를 구현하여 에지로 구성되어있는 배열을 구현해야함DFS와 다른점이 있다면, 스택으로 제거하는 것이 아닌 큐의 형태로 먼저 들어온 순서부터 제거하며 삽입 및 삭제를 진행.과정첫번째 노드부터 큐에 삽입하여, 큐를 시작하고 인접해 있는 노드를 차례대로 큐에 삽입한다큐에 먼저 들어간 노드부터 삭제하며, 인접한 노드들이 있다면 차례..
-
[DFS] 백준 13023번책/DoIt 알고리즘 코딩테스트 2024. 11. 17. 15:39
문제BOJ 알고리즘 캠프에는 총 N명이 참가하고 있다. 사람들은 0번부터 N-1번으로 번호가 매겨져 있고, 일부 사람들은 친구이다.오늘은 다음과 같은 친구 관계를 가진 사람 A, B, C, D, E가 존재하는지 구해보려고 한다.A는 B와 친구다.B는 C와 친구다.C는 D와 친구다.D는 E와 친구다.위와 같은 친구 관계가 존재하는지 안하는지 구하는 프로그램을 작성하시오.[조건]첫째 줄에 사람의 수 N (5 ≤ N ≤ 2000)과 친구 관계의 수 M (1 ≤ M ≤ 2000)이 주어진다.둘째 줄부터 M개의 줄에는 정수 a와 b가 주어지며, a와 b가 친구라는 뜻이다. (0 ≤ a, b ≤ N-1, a ≠ b) 같은 친구 관계가 두 번 이상 주어지는 경우는 없다.[출력]문제의 조건에 맞는 A, B, C, D,..
-
소수 찾기알고리즘 2024. 11. 16. 15:11
에라토스테네스의 체수학자 에라토스테네스가 발견한 소수를 찾는 방법을 일컫는다.2,3,5,7을 제외한 해당 수의 배수를 제거하면, 소수인 숫자를 찾을 수 있다. 에라토스테네스의 체 과정한 자리 수의 소수 인 경우는 2,3,5,7이다. 해당 수의 경우에는 소수이므로 따로 저장2의 배수를 가지는 수는 소수가 아니므로 모두 제거3의 배수를 가지는 수는 소수가 아니므로 모두 제거5의 배수를 가지는 수는 소수가 아니므로 모두 제거7의 배수를 가지는 수는 소수가 아니므로 모두 제거위의 과정에서 2,3,5,7를 제외한 해당수의 배수가 아닌 수를 구함해당 숫자들이 소수 구현public class App { public static void main(String[] args) throws Exception { ..