전체 글

· 백준
https://www.acmicpc.net/problem/23978효석이는 영일 코인을 매도해 K원 이상을 현금화하려고 한다. 효석이는 자신이 정한 N개의 날짜에 코인의 가격을 급상승시키고, 처음 코인의 가격이 오른 날부터 매일 한 개씩 매도할 계획이다. 효석이가 정한 날짜에 영일 코인은 X원으로 오르고, 그 후 0원이 될 때까지 하루에 1원씩 가격이 낮아진다. 코인의 가격이 너무 크게 오르면 의심을 살 수 있기 때문에 최소 금액으로 상승시켜 현금화를 하려고 한다. 마지막 가격 상승 이후 코인의 가격이 0이 될 때까지, K원 이상 현금화할 수 있는 가장 작은 정수 X를 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 ..
저번 섹션까지 서블릿과 관련한 프로젝트는 마무리됐다. 이후 스프링 MVC를 집중적으로 학습하기 위해 새로운 스프링 프로젝트를 생성한다.  1. 프로젝트 생성 및 기초 작업이때 뷰 템플릿 엔진으로 JSP 대신 Thymeleaf를 사용하기 때문에 Packaging을 War 대신 Jar로 선택해야 한다.Jar를 사용하면 항상 내장 서버(톰캣 등)를 사용하고, webapp 경로도 사용하지 않는다. 내장 서버 사용에 최적화돼 있는 기능이라, 최근에는 스프링 부트 사용 시 주로 이 방식을 사용한다.War는 WAS를 별도로 설치하고, 그곳에 빌드된 파일을 넣을 때 사용한다. 물론 내장 서버도 사용 가능하지만, 주로 외부 서버에 배포하는 목적으로 사용한다. Welcome 페이지 만들기스프링 부트에 Jar를 사용하면 스..
🐛이슈- 발생한 오류 copy & paste- 오류가 발생한 상황 간략히 설명오늘 하루 예산을 조회하는 API와 오늘부터 말일까지의 날짜별 하루 예산을 조회하는 API에서 오류가 생겼었다.구체적인 오류8월 12일에 배포 서버의 swagger에서 테스트한 결과, 원래대로면 12일부터 31일까지의 하루 예산만 나와야 했지만, 10일과 11일의 하루 예산까지 조회되는 문제가 발생했다.로컬 서버의 swagger 테스트 결과는 정상적으로 나오는 것까지 확인했다.상황CICD 파이프라인이 돌아간 마지막 날짜는 8월 10일이었다. 날짜가 수상하게 들어맞는다는 생각이 들어서, DayBudgetService가 스프링 빈으로 등록될 때 or 배포가 진행될 때 날짜가 고정돼버려서 생긴 문제가 아닐지 의심하게 됐고, 해당 코..
1. 스프링 MVC 전체 구조저번 섹션에서 직접 만든 MVC 프레임워크와 스프링 MVC 구조를 비교해보자.전체적으로 보면 구조가 매우 비슷하다. 객체들 이름만 바꾸고, 기능을 확장하면 거의 똑같이 볼 수 있다.FrontController → DispatcherServlethandlerMappingMap → HandlerMappingMyHandlerAdapter → HandlerAdapterModelView → ModelAndViewviewResolver 메서드 → ViewResolver InterfaceMyView class→ View Interface DispatcherServlet 구조 살펴보기스프링 MVC도 프론트 컨트롤러 패턴으로 구현돼 있다. 그 프론트 컨트롤러가 바로 DispatcherServ..
이전엔 단순하고 실용적인 MVC 프레임워크를 만들었다. [스프링 MVC 1편] (4) MVC 프레임워크 만들기 - 1이전에 서블릿을 Controller로, JSP를 View 화면 렌더링용으로 사용하는 MVC 패턴을 도입했었다. [스프링 MVC 1편] (3) 서블릿, JSP, MVC 패턴1. 서블릿으로 회원 관리 웹 애플리케이션 만들기회원 관리 웹dev-meung.tistory.com 이번 섹션에선 어댑터라는 개념을 추가해 스프링 MVC를 더 자세하게 이해해 본다. 1. 유연한 컨트롤러 (v5) - 1어댑터 패턴만약 어떤 개발자는 ControllerV3 방식으로 개발하고 싶고, 어떤 개발자는 ControllerV4 방식으로 개발하고 싶다면 어떻게 해야 할까?public interface Controller..
· 백준
https://www.acmicpc.net/problem/1283한글 프로그램의 메뉴에는 총 N개의 옵션이 있다. 각 옵션들은 한 개 또는 여러 개의 단어로 옵션의 기능을 설명해 놓았다. 그리고 우리는 위에서부터 차례대로 각 옵션에 단축키를 의미하는 대표 알파벳을 지정하기로 했다. 단축키를 지정하는 방법은 아래의 순서를 따른다.먼저, 하나의 옵션에 대해 왼쪽에서부터 오른쪽 순서로 단어의 첫 글자가 이미 단축키로 지정됐는지 살펴본다. 만약 단축키로 아직 지정이 안 돼있다면 그 알파벳을 단축키로 지정한다.만약 모든 단어의 첫 글자가 이미 지정이 돼있다면 왼쪽에서부터 차례대로 알파벳을 보면서 단축키로 지정되지 않은 것이 있는 경우 그 알파벳을 단축키로 지정한다.어떠한 것도 단축키로 지정할 수 없다면 그냥 놔두..
· 백준
https://www.acmicpc.net/problem/11060재환이가 1×N 크기의 미로에 갇혀있다. 미로는 1×1 크기의 칸으로 이루어져 있고, 각 칸에는 정수가 하나 쓰여 있다. i번째 칸에 쓰여 있는 수를 A_i라고 했을 때, 재환이는 A_i 이하만큼 오른쪽으로 떨어진 칸으로 한 번에 점프할 수 있다. 예를 들어, 3번째 칸에 쓰여 있는 수가 3이면, 재환이는 4, 5, 6번 칸 중 하나로 점프할 수 있다. 재환이가 지금 미로의 가장 왼쪽 끝에 있고 가장 오른쪽 끝으로 가려고 할 때, 최소 몇 번 점프를 해야 갈 수 있는지 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 ..
· 백준
https://www.acmicpc.net/problem/2564경비원 동근이가 담당하고 있는 곳은 직사각형 모양의 블록으로 블록 중간을 가로질러 차가 통과할 수 없다. 이 블록 경계에 무인 경비를 의뢰한 상점들이 있다.예를 들어, 1번 상점에서 호출이 들어왔을 때 동근이가 블록을 시계방향으로 돌아 이동하면 이동 거리가 12가 된다. 반면 반시계방향으로 돌아 이동하면 이동 거리는 18이 된다. 따라서 동근이가 1번 상점으로 가는 최단 거리는 12가 된다. 마찬가지로 동근이의 위치에서 2번 상점까지의 최단 거리는 6, 3번 상점까지의 최단 거리는 5가 된다. 블록의 크기와 상점의 개수 및 위치, 그리고 동근이의 위치가 주어질 때 동근이의 위치와 각 상점 사이의 최단 거리의 합을 구하는 문제다. 문제 탐색하..
dev-meung
IT::Coding