분류 전체보기(361)
-
[Baekjoon] 1926번: 그림
https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 문제 설명 1과 0으로 구성된 그림 배열이 주어진다. 1로 이어진 것이 그림이다. 상하좌우로만 연결된 것으로 판단하며 대각선은 이어진 것이 아니다. 주어진 배열에서 그림 개수와 가장 크기가 큰 그림의 크기를 출력하면 된다. 풀이 방법 기본적인 그래프 탐색 문제이며 DFS와 BFS로 문제를 해결할 수 있다. DFS for (int i = 0; i < n; i++) { for (int j = 0; j < ..
2023.03.09 -
[Baekjoon] 1269번: 대칭 차집합
https://www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net 문제 설명 두 집합 A, B가 주어질 때 ( A - B ) 와 ( B - A ) 의 합집합을 대칭 차집합이라고 한다. 이 대칭 차집합의 원소 개수를 구하면 된다. 풀이 방법 1. HashSet 집합이라는 문제에 걸맞게 HashSet으로 해결했다. 먼저 HashSet에 집합 A의 원소를 모두 넣는다. 그 다음 B의 원소를 넣을 때 이미 Set에 들어있다면 해당 요소를 제거하고 없다면 넣으면 된..
2023.03.08 -
[Baekjoon] 1620번: 나는야 포켓몬 마스터 이다솜
https://www.acmicpc.net/problem/1620 문제 설명 문제가 엄청나게 길지만 요약하면 다솜이가 사용할 포켓몬 도감을 만들어줘야 한다. N개만큼 포켓몬 이름이 입력되며 순서가 있고 순서대로 저장된다. 그 다음 입력되는 질문 M개에 대해서 대답해야 한다. 숫자로 들어오는 경우 해당 번호에 해당되는 포켓몬 이름이 출력되고 포켓몬 이름이 들어오면 해당 번호가 출력돼야 한다. 풀이 방법 2개의 HashMap을 이용해 해결했다. 한 개는 번호를 키로 사용하고 값을 포켓몬 이름을 저장하고, 다른 하나는 키로 포켓몬 이름을 사용하고 값으로 번호를 저장한다. 그 다음엔 질문이 숫자인지 포켓몬 이름인지 판별해야 하는데 이 방법으론 두 가지가 있다. matches()를 활용한 정규식 첫 글자만 가져와..
2023.03.07 -
[Spring Security] 인증 흐름 및 절차
1. 들어가며 스프링 시큐리티는 여러 가지 인증을 처리할 수 있도록 확장성 있게 개발되었다. 그 중 이번에는 기본적으로 제공되는 username과 password를 이용한 form 기반의 인증을 다룰 것이다. 2. SecurityContextPersistenceFilter 인증 처리가 시작되기 전에 거치게 되는 필터이다. 이 필터는 SecurityContext가 현재 요청에 포함되어 있는지 확인하고 없다면 만들어주는 역할을 수행한다. 그리고 이 SecurityContext는 하나의 요청의 흐름이 사용자에게 응답될 때까지 유지된다. 그 기반은 ThreadLocal로 동작한다. 실제로 인증을 처리하는 필터는 이후에 등장하는 UsernamePasswordAuthenticationFilter이다. 3. Auth..
2023.03.07 -
[Spring Security] 기본 필터 소개
스프링 시큐리티는 웹 요청에 관련된 필터 체인을 제공해준다. 이 필터들이 어떤 역할을 하는지 개략적으로 알아보도록 한다. 스프링 시큐리티 기본 필터 스프링 시큐리티에서 기본적으로 제공하는 필터는 다음과 같다. 참고로 이 스프링 시큐리티의 버전은 5.7.7이다. 먼저 이 필터들이 어떤 동작을 하는지 간략히 설명하고 나서 중요한 필터들에 대해 자세히 설명하도록 하겠다. DisableEncodeUrlFilter 세션 ID가 URL에 포함되는 것을 막기 위해 HttpServletResponse를 사용해서 URL이 인코딩 되는 것을 막기 위한 필터이다. WebAsyncManagerIntegrationFilter SpringSecurityContextHolder는 기본적으로 ThreadLocal 기반으로 동작하는데..
2023.03.06 -
[Spring Security] 기본 동작 원리
1. 스프링 시큐리티란? 스프링 시큐리티는 스프링 생태계에서 지원하는 보안 관련 기능을 제공하는 프레임워크이다. 기본적으로 스프링을 백엔드로 활용한다면 보안과 관련된 부분은 서블릿 필터나 스프링 인터셉터에서 처리했다. 하지만 일일이 이런 식으로 실제 프로젝트에서 하는 것은 체계화되지 않은 부분에 불과했고 이를 스프링에서 공식적으로 제공하였다. 본격적으로 시작하기 전에 보안 용어들을 정리하고 가도록 하겠다. 인증(Authentication): 요청한 사람이 본인인지를 확인하는 절차 인가(Authorization): 인증된 사용자가 접근한 자원에 권한이 있는지를 확인하는 절차 2. 기본 동작 원리 및 흐름 스프링 시큐리티는 서블릿 필터 기반으로 동작하면서 스프링의 많은 지원을 함께 사용할 수 있도록 했다. ..
2023.03.06