전체 글

전체 글

    [알고리즘] 동적계획법 (Dynamic Programming, DP)

    동적계획법 (Dynamic Programming, DP) : 여러개의 하위 문제를 먼저 푼 후 그 결과를 쌓아올려 주어진 문제는 해결하는 알고리즘 DP 문제가 성립할 조건 1. 최적 부분 구조(Optimal Substructure) : 상위 문제를 하위 문제로 나눌 수 있으며 하위 문제의 답을 모아서 상위 문제를 해결할 수 있다. 2. 중복되는 부분 문제(Overlapping Subproblem) : 동일한 작은 문제를 반복적으로 해결해야 한다. 쉽게 설명하면 문제를 해결하기 위한 점화식을 찾아낸 후 점화식의 항을 밑에서부터 차례로 구해나가서 답을 알아내는 형태의 알고리즘 * 혹은 Top-down (재귀)으로도 구성될 수 있다. 이는 이미 계산된 하위 문제에 대한 결과를 별도의 메모리 영역에 저장하여 다..

    [eclipse] error running Gradle test : No matching tests found in any candidate test task.

    스프링부트 TDD를 공부하던 와중 에러가 발생했다. 단순한 test 코드였는데 run을 해도 아무런 변화가 생기지 않았다. 자세히 살펴보니 terminated가 떠있는걸 발견할 수 있었고, 사람들이 말하는 빨간줄과 초록줄도 보이지 않았다.. 그래서 gradle test를 해보니 No matching tests found in any candidate test task. 에러 해결 1. junit5 의존성 추가하기 스프링부트 2.2x 이상부터는 junit4가 아닌 junit5를 사용해야 한다고 한다. 마구잡이식으로 의존성을 추가했던터라 junit4가 추가되어 있었다! 다시 junit5로 추가해주었다. 그래도 run이 되지 않았다... 2. org.junit.jupiter 패키지 사용하기 이전에 junit4..

    [Spring Boot] Heroku 서버 배포하기

    [Spring Boot] Heroku 서버 배포하기

    이번 동아리 팀 프로젝트에서 서버 배포가 필요해 heroku에 배포해보았다. 삽질 끝에 배포를 성공하여서 이곳에 정말정말 상세하게 기록을 해보겠다.. 1. Heroku 회원가입 및 로그인 https://dashboard.heroku.com/ Heroku dashboard.heroku.com 2. Heroku 새로운 프로젝트 생성 무료는 최대 5개까지라고 한다. create new app app-name을 설정 + US로 해야 무료라고 한다. 3. heroku에 push할 프로젝트를 따로 만든다. 기존 개발중인 워크 스페이스 말고 heroku에 배포할 프로젝트를 따로 만들었다. $ git clone ${github repo} clone 해 온 경로(루트 디렉터리)에서 .git 파일 삭제 (heroku에서 ..

    [Spring Boot] CORS 설정 시 addCorsMappings 에러 해결

    java.lang.IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot contain the special value "*" since that cannot be set on the "Access-Control-Allow-Origin" response header. To allow credentials to a set of origins, list them explicitly or consider using "allowedOriginPatterns" instead. 스프링 부트에서 CORS 설정 시 `.allowCredentials(true)` 와 `allowedOrigins("*")` 를 동시에 사용할 수 없도록 업..

    [알고리즘] 이분 탐색(Binary Search)

    이분 탐색(Binary Search) : 전체 데이터에서 탐색 범위를 절반씩 줄여가며 key를 찾는 탐색 방법 이분 탐색은 정렬되어 있는 배열에서 데이터를 찾을 때 작동 가능하다. 이분 탐색은 결정 문제(Decision Problem)의 답이 이분적일 때 사용할 수 있는 탐색 방법이다. 이때 결정 문제란 Yes or No인 문제를 의미하며 보통 1개의 Parameter를 가집니다. ex) 1 2 3 4 5 6 에서 2를 찾고자 할 때 1) 배열의 중간에 위치한 3과 2를 비교 2) 2는 3보다 작으므로, 3의 오른쪽에 위치하는 값들을 탐색할 필요가 없다. 3) 그러면 3의 왼쪽에 있는 값 대상으로 다시 이분 탐색 4) 1 2 3 중에 중간값인 2와 비교 => 탐색 종료 종료 조건 1. 검색을 성공할 경우..

    [Spring boot] JPA 카멜 표기법으로 이름 설정하기

    spring boot 프로젝트 생성 후 JPA를 이용해 매핑해주는 작업에서 테이블명과 관련해 애를 먹었다. 기존에 만들어 둔 테이블명은 UserInfo 였는데 자꾸만 user_info로 새로운 테이블이 만들어졌기 때문.. 그래서 찾아보니 스프링 기본설정을 통해 CamelCase -> SNAKE_CASE로 자동 변환해준다고 한다. @Table(name="UserInfo") // user_info 테이블 이름 @Table(name="userinfo") // userinfo 테이블 이름 컬럼 이름도 마찬가지로 적용할 수 있다. 참고 http://stackoverflow.com/questions/25283198/spring-boot-jpa-column-name-annotation-ignored Spring Bo..