목록전체 글 (41)
희디비
💡 문제 상황로그인을 한 유저 A는 모든 요청을 허용 하지만비 로그인 유저는 아이템 등록 폼으로 가는 것을 막고 싶습니다.이럴땐 필요한 것이 필터 입니다. 💡 필터요청 흐름WAS( 톰캣 ) > 필터 > 서블릿( DispatcherServlet ) > 컨트롤러 비로그인 한 유저는 필터에서 검증을 해서 막게 되면 서블릿, 컨트롤러 호출을 막을 수 있습니다. 필터 메서드init() : 필터의 시작을 나타내는 메서드destory() : 필터의 끝을 나타내는 메서드⭐️doFilter( ) : 필터의 주요 메서드로 실제 검증 기능을 합니다. dofilter 에서 비 로그인 사용자가 허가 되지 않은 url로 들어 왔다면 login 입력 폼으로 되돌리고로그인에 성공 한다면 자신이 들어온 입력폼으로 redirect..
💡 로그인 서비스를 구현할때 로그인은 필수 기능 입니다.하지만 Http = 무상태 ( Stateless ) 이기 때문에 다시 접속할때 유저 정보를 주지 않으면서버는 어떤 유저가 접속 한 것 인지 알 수 없습니다. 그렇다면 로그인 유저의 정보를 서버는 저장을 해야하는데 어떻게 해야 할까요?파라미터 값으로 유저의 정보를 계속 줄 순 있지만 이 방식은 비효율적 입니다.그레서 등장한 것이 쿠키 입니다. 💡 쿠키 유저가 로그인을 할 경우 응답값에 쿠키를 넣어 줍니다.다음 응답시 마다 유저는 쿠키를 보여 주며 자신이 등록된 유저임을 증명 하게 됩니다. ⭐️ 쿠키 종류 세션 쿠키 : 쿠키의 만료 시각을 명시 하지 않으면 쿠키는 세션이 끝날때 삭제 됩니다.지속 쿠키 : expries 속성에 날짜를 지정하거나, ..
💡 빈 검증 ( Bean Vaildation ) Validator를 등록하여 검증 하는 방식은 따로 클래스를 만들고 등록 하는 과정이 필요합니다.이 과정을 없애기 위해 스프링부트는 글로벌 Validator를 등록 합니다.그러므로 따로 Validator를 등록 할 필요가 없습니다. 또한 코드를 통해 검증 하는 방식을 빈 어노테이션을 통해 검증 하여 검증 코드를 작성 하지 않고,빈 어노에티션을 통해 검증 할 수 있습니다. 🙄 빈 검증 기능을 어떻게 사용하나요? 검증 하고자 하는 객체에 원하는 검증 어노테이션을 붙이고,컨트롤러에서 검증 객체 앞에 @Valid or @Validated 어노테이션을 붙이면 됩니다.그러면 해당 객체의 어노테이션을 통해 검증을 하게 됩니다. 빈 검증 단계는 다음과 같습니다.1..
💡 메시지 화면에 상품명 : "상품명" 으로 나타내는 뷰가 있습니다.만약, 기획자가 상품명을 "상품 이름" 으로 바꿔 달라고 한다면 어떻게 해야 할까요?또한, 이 상품명이 10개 페이지에서 사용 된다면 개발자는 하드코딩 된 상품명을 모두 일일이 고쳐야 합니다. 이럴때 필요한 기능이 한번에 값을 고칠수 있는 메시지 입니다. 🙄 메시지 기능 어떻게 사용하나요? 간단히 스프링에 MessageSource를 빈으로 등록 하면 됩니다. 하지만 스프링 부트는 MessageSource를 자동으로 등록 해주기 때문에 빈 등록을 안해도 사용 가능 합니다. 메시지 경로는 resources 이며,기본 basename = messages로 설정 됩니다. 추가 등록은 application.properties 에서 ..
💡 문제 n가지 종류의 동전이 있다. 각각의 동전이 나타내는 가치는 다르다. 이 동전을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그 경우의 수를 구하시오. 각각의 동전은 몇 개라도 사용할 수 있다.사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다. ⌨ 입력 첫째줄 N / K ( 1 ( 1 둘째줄 ~ N 줄 동전의 가치 10만 이하의 수 💻 출력 / 제한 첫째 줄에 경우의 수를 출력한다. 경우의 수는 231보다 작다. 풀이 방법 문제 유형 : 다이나믹 프로그래밍( DP ) 문제 : 여러 동전으로 K 원 만드는 경우의 수 ( 단. 같은 동전 여러개 사용 가능 ) 접근동전이 몇개, 어떤 종류 동전이 사용 되는지 모른다.동전이 최대 100개 이므로 탐색으론 불가능 ..
💡 문제 한 배열 A[1], A[2], …, A[n]에 대해서, 부 배열은 A[i], A[i+1], …, A[j-1], A[j] (단, 1 ≤ i ≤ j ≤ n)을 말한다. 이러한 부 배열의 합은 A[i]+…+A[j]를 의미한다. 각 원소가 정수인 두 배열 A[1], …, A[n]과 B[1], …, B[m]이 주어졌을 때 A의 부 배열의 합에 B의 부 배열의 합을 더해서 T가 되는 모든 부 배열 쌍의 개수를 구하는 프로그램을 작성하시오.예를 들어 A = {1, 3, 1, 2}, B = {1, 3, 2}, T=5인 경우, 부 배열 쌍의 개수는 다음의 7가지 경우가 있다.T(=5) = A[1] + B[1] + B[2] = A[1] + A[2] + B[1] = A[2] + B[3] = A[..
💡 문제 세준이가 살고 있는 도시는 신기하게 생겼다. 이 도시는 격자형태로 생겼고, 직사각형이다. 도시의 가로 크기는 N이고, 세로 크기는 M이다. 또, 세준이의 집은 (0, 0)에 있고, 세준이의 학교는 (N, M)에 있다.따라서, 아래 그림과 같이 생겼다. 세준이는 집에서 학교로 가는 길의 경우의 수가 총 몇 개가 있는지 궁금해지기 시작했다.세준이는 항상 최단거리로만 가기 때문에, 항상 도로를 정확하게 N + M개 거친다. 하지만, 최근 들어 이 도시의 도로가 부실공사 의혹으로 공사중인 곳이 있다. 도로가 공사 중일 때는, 이 도로를 지날 수 없다.(0, 0)에서 (N, M)까지 가는 서로 다른 경로의 경우의 수를 구하는 프로그램을 작성하시오. ⌨ 입력 첫째줄 0 둘째줄 도로의 개수 K ( 0 셋째..
💡 문제 링크 : https://www.acmicpc.net/problem/17281 ⌨ 입력 첫째줄 : N ( 2 둘째줄 : N의 수만큼 이닝의 결과 9개 반복 💻 출력 / 제한 이안타팀이 얻을 수있는 최대 점수 출력 풀이 방법 시뮬레이션 문제 입니다. 문제 풀이 순서는 다음과 같습니다. 1. 선수의 순열을 통해 순서를 찾는다 ( 단. 1번 타자의 순서는 4번째 )2. 야구 게임을 한다.→ 순열의 결과로 이닝의 타자 결과 배열을 만든다.→ out ≠ 3 일때 까지 야구 게임을 한다.→ 만약 타자의 결과가 안타 이상 이면 goRoo 함수를 통해 점수를 올린다.→ 순열 별로 점수의 최대값을 갱신 한다. 순서 찾기 위한 순열visited → 해당 번호의 선수가 뽑혔는가?order[index] → i..
💡 문제 링크 : https://www.acmicpc.net/problem/15683 ⌨ 입력 첫째줄 : 가로 세로의 크기 N ( 1 둘째줄 ~ N줄 : 사무실의 각 칸의 정보 1 ~ 5 cctv / 6 : 벽 💻 출력 / 제한 첫째 줄에 사각지대의 최소 크기를 출력 한다. 풀이 방법 백트래킹, 구현문제 입니다.( 방향을 어떻게 회전 시킬까가 어려웠습니다.) 시간 복잡도 CCTV CCTV 방향 전환 조합을 찾는다.-> 각 CCTV 별 0 ,1, 2, 3 조합을 찾는다. ( 90도, 180도, 270도, 360도 ) CCTV 기본 방향 방향을 어떻게 돌릴까? 예시) 3번 CCTV 180도 회전 인경우방향배열 크기가 4개 이므로 다음 방향은 (현재 방향 + 회전) % 4CCTVDirection..
💡 문제 홍대병에 걸린 도현이는 겹치는 것을 매우 싫어한다. 특히 수열에서 같은 원소가 여러 개 들어 있는 수열을 싫어한다. 도현이를 위해 같은 원소가 K개 이하로 들어 있는 최장 연속 부분 수열의 길이를 구하려고 한다. 100 000이하의 양의 정수로 이루어진 길이가 N인 수열이 주어진다.이 수열에서 같은 정수를 K개 이하로 포함한 최장 연속 부분 수열의 길이를 구하는 프로그램을 작성해보자 ⌨ 입력 첫째줄 : N ( 1 둘째줄 : 수열의 원소 N개 💻 출력 / 제한 조건을 만족하는 최장 연속 부분 수열의 길이를 출력한다. 풀이 방법 투포인터 문제 입니다. 2가지 방법으로 구현 할 수 있습니다.1. Queue, Map 을 사용 하여 구현2. 투포인터 사용 하기 1. 큐, 맵으로 구현 하기 Qu..