본문 바로가기

분류 전체보기

(340)
[programmers/kakao] [3차] 자동완성 (Java) 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/17685?language=java 코딩테스트 연습 - [3차] 자동완성 자동완성 포털 다음에서 검색어 자동완성 기능을 넣고 싶은 라이언은 한 번 입력된 문자열을 학습해서 다음 입력 때 활용하고 싶어 졌다. 예를 들어, go 가 한 번 입력되었다면, 다음 사용자는 g programmers.co.kr 검색어 자동완성 기능을 만들고, 모든 문자를 찾기위해서 최소 몇번 타이핑해야하는지 찾는 문제다. 풀이 전형적인 Trie 문제였다 모든 단어의 길이를 합쳤을때 최대 1,000,000길이가 나오니 Trie 구조를 만드는데, 1,000,000번 반복하며, 모든 단어의 길이의 합이 최대 1,000,000 이므로 ..
[programmers/kakao] 코딩테스트 - 추석 트래픽 (Java) 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/17676?language=java includedLog.getStartSeconds()) return true; return false; } public long getStartSeconds(){ return this.startSeconds; } public long getEndSeconds(){ return this.endSeconds; } public Log(String logLine){ String[] splitedLogLine = logLine.split(" "); String date = splitedLogLine[1]; String operationTime = splitedLogLine[..
[끄적끄적] OAuth proxy 서버 인증 flow 설계과정 API서버에서 가입과정을 OAuth 애플리케이션에 전가하고, 인증과정으로 토큰 기반 인증을 채택했을때의 인증 flow 설계 과정을 적은 글입니다. 이 글이 유사한 상황에서 인증 과정을 설계하는 사람들에게 영감이 되어주면 좋겠습니다. 실제 인증 API는 https://api.gitofolio.com/restdocs 인증목차에서 확인할 수 있습니다. OAuth proxy 서버 인증 flow 설계 목차 - 인증 기술 선택 - 클라이언트측의 인증 과정과 redirect를 적용했을 경우의 문제점 - redirect포함 인증 flow 설계와 인증과정 탈취에 안전하게 설계하기 인증 기술 선택 토이프로젝트를 진행하면서 API서버에 인증과정을 구현해야했다. 인증 기술로는 2가지를 고려했는데, 1. 세션 - 쿠키 기반 인..
[백준 / BOJ] 1195 킥다운 문제 출처 : https://www.acmicpc.net/problem/1195 1195번: 킥다운 첫 줄에는 첫 번째 기어 파트를 나타내는 1과 2로 구성된 문자열이 주어진다. 두 번째 줄에는 마찬가지로 두 번째 기어 파트를 나타내는 1, 2로 구성된 문자열이 주어진다. 여기서 1은 홈을, 2는 www.acmicpc.net 두개의 기어파트가 주어진다. 각 기어파트는 1과 2로 이루어져있는데, 1은 '홈(들어가있는 부분)' 2는 '이(나와있는 부분)'를 나타낸다 이 때, 두개의 기어파트를 적절히 조합하여 조합된 기어파트의 길이의 최솟값을 구하는 문제다. 풀이 기어의 길이가 최대 100이므로 완전탐색으로 풀리는 문제다. 문제에서 주어진 그대로 구현하면 되는데, 몇가지 주의할 점 이 있다. - 기어가 맞물린..
[백준/BOJ] 1038 감소하는 수 문제 출처 : https://www.acmicpc.net/problem/1038 1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 www.acmicpc.net 음이 아닌 정수의 가장 큰 자릿수 부터 가장 작은 자릿수까지 각 자릿수가 모두 감소하는 수를 감소하는 수라고 한다. 이 때, N번째 감소하는 수를 찾는 문제다. 풀이 N이 최대 1,000,000이길래 처음에는 DP로 생각했는데, 좀만 더 생각해보면 탐색횟수가 그렇게 크지 않다는 것을 알 수 있다. (DP식이 나오긴 하는걸로봐서 DP로 풀릴거 같긴 함) 음이 아닌 정수가..
[Spring Boot] 404에러 핸들링과 .jsp .html 동시 사용 [Spring Boot] 404에러 핸들링과 .jsp .html 동시 사용 목차 - 상황 - 원인과 해결방법 -- ResourceHandler 등록 상황 api 서버 View단으로 jsp와 html을 동시에 사용해야했다. 이 를 위해 기본으로 jsp파일을 사용하도록 하고, ResourceHandler에 .html을 매핑해줬는데, DispatcherServlet에 404 에러 핸들링 설정을 추가하면서 ResourceHandler가 매핑되지 않고 html 파일을 불러오지못하는 문제가 발생했다. 원인과 해결법 Spring MVC는 우선, DispatcherServlet을 통해, 들어온 url과 매핑된 Handler를 찾고, 없다면, ResourceHandler를 통해 등록된 파일을 (직접) 찾는다. 기존에는 ..
[끄적끄적] HATEOAS AOP적용기 [끄적끄적] HATEOAS AOP적용기 토이플젝에 API유연성을 높이고자 HATEOAS를 적용하기로 했다. Hateoas를 AOP로 만들어서 사용하기로한 이유는 크게 다음과 같다. 1. HATEOAS적용은 특정한 코드에 종속적일 필요가없다. 2. HATEOAS의 적용은 특정한 위치에 지속적으로 반복되어서 나타난다. (예를 들어, Hateoas적용은 컨트롤러에서 사용자에게 응답하는 과정에서 반복적으로 일어난다.) + 이 당시 Spring Boot에 HATEOAS관련 라이브러리가 존재하는것을 몰라서 직접 구현했는데, 구현목적으로 이 글을 읽는 분이라면 Hateoas구현부분은 라이브러리로 대체하고, AOP를 적용하는부분만 읽는것을 추천한다. 실력있는 개발자가 지속적으로 버전관리를 해주기 때문에, 라이브러리를 ..
[끄적끄적] JpaRepository 접근 프록시 계층 설계 [회고] JpaRepository 접근 프록시 계층 설계 토이 프로젝트를 진행하며 맞닥뜨린 설계문제를 객체지향적으로 해결한 경험을 작성한 글 입니다. 위 그림상에서 proxy 부분에 해당하는 설계다. (아직 배포하지않은 프로젝트이기 때문에, 설계도내의 클래스 이름은 모두 A,B,C,D ... 로변경했습니다.) 문제상황 토이 프로젝트를 진행하다가, DB와 통신하는(정확히는 JpaRepository와 통신함) 서비스 객체의 프록시를 만들어야 하는 상황이였다. 우선, 기존의 문제되었던 소스코드 설계도를 보자. (쉽게 이해하기 위해, 이 글에 필요하지 않은 메소드들은 설계도상에서 모두 삭제했다.) 기존설계의 문제점은, 실제 코드상 에서 물리적으로 전혀 연관이 없는(연관이 있으면 안되는) 인터페이스 구현 클래스들..