본문 바로가기

전체 글

(125)
16987 계란으로 계란치기 문제: https://www.acmicpc.net/problem/16987 16987번: 계란으로 계란치기 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱 www.acmicpc.net 문제의 조건이 복잡하게 되어 있어 헷갈렸던 문제였다. 조건을 살펴보면 상태를 기억하기 위한 재귀 호출이 필요하다는걸 눈치챌 수 있는데, 계란을 치고 내구도가 감소된 상태에서 다음 계란을 칠 지 판단하는 것, 내구도가 0이하인 계란은 더 이상 치지 않고 다음 계란으로 넘어가는 조건을 통해 판단했다. N의 크기가 작기 때문에 브루트포스로 전부 탐색해도 무리가 없다. import ..
16197 두 동전 문제를 풀기 위해 조건에 유의하여 접근해야 한다. 1. 두 개의 동전이 빠져나가는 경우는 제외한다. 2. 동전의 다음 방향에 벽이 있다면, 이동할 수 없다. 3. 두 동전은 함께 이동한다. 4. 동전의 이동 횟수가 10번을 초과하면 취소한다. 정답을 찾기 위해서는 위의 조건을 만족하는 모든 경우를 탐색해야 한다. 따라서 DFS와 유사하게 접근했다. 접근 방식 1. base case로 10번을 초과하는 경우라면 탐색을 종료한다. 2. 두 동전의 다음 좌표를 계산한다. 2.1 두 동전이 모두 범위를 벗어난다면 탐색을 종료한다. 2.2 하나의 동전만 범위를 벗어난다면 최소 이동 횟수를 저장하고, 탐색을 종료한다. 3. 다음 칸이 벽이라면, 원래 좌표로 값을 갱신한다. 4. 상하좌우로 탐색을 진행한다. impo..
Filter, Interceptor, AOP 차이에 대한 정리 공통 프로세스에 대한 고민 자바 웹 개발을 하다보면, 공통적으로 처리해야 할 업무들이 많다. 예를들어 로그인 관련(세션체크)처리, 권한체크, XSS(Cross site script)방어, pc와 모바일웹의 분기처리, 로그, 페이지 인코딩 변환 등이 있다. api마다 공통 로직을 작성하게 되면 코드 중복으로 인해 관리하기 까다로워지고, 다른 도메인 로직에 섞여들기 때문에 가독성을 해친다. 따라서 공통 로직을 한 곳에 모으고, 선택적으로 적용하는 것이 필요하다. Spring에서 위와 같은 상황에 적용하기 위한 3가지 방법이 있다. Filter, Interceptor, AOP의 흐름 - Interceptor와 Filter는 Servlet 단위에서 실행된다. 반면 AOP는 Proxy 패턴으로 실행된다. - 요청..