이전엔 단순하고 실용적인 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가 된다. 블록의 크기와 상점의 개수 및 위치, 그리고 동근이의 위치가 주어질 때 동근이의 위치와 각 상점 사이의 최단 거리의 합을 구하는 문제다. 문제 탐색하..
이전에 서블릿을 Controller로, JSP를 View 화면 렌더링용으로 사용하는 MVC 패턴을 도입했었다. [스프링 MVC 1편] (3) 서블릿, JSP, MVC 패턴1. 서블릿으로 회원 관리 웹 애플리케이션 만들기회원 관리 웹 애플리케이션 요구사항이번 섹션에선 회원 정보(이름, 나이)를 저장하고 조회하는 비즈니스 로직을 가진 웹 애플리케이션을 간단dev-meung.tistory.com 이번 섹션에선 MVC 패턴을 사용하면서 발생하는 문제점을 개선한 MVC 프레임워크를 서블릿을 통해 차근차근 만들어 볼 예정이다. 단계별로 프레임워크를 만들고 나면 나중에 스프링 MVC의 구조를 이해하는 데 훨씬 도움이 된다. 1. 프론트 컨트롤러 패턴 소개프론트 컨트롤러를 도입하기 전엔 요청이 올 때마다 각각 공통 로..
https://www.acmicpc.net/problem/13702은상은 막걸리 N 주전자를 주문하고, 자신을 포함한 친구들 K명에게 막걸리를 똑같은 양으로 나눠주려고 한다. 이때 막걸리마다 용량이 다를 수 있다. 한 번 주문한 막걸리에 남은 것을 모아서 친구들에게 다시 주는 경우는 없다. K명에게 최대한의 많은 양의 막걸리를 분배할 수 있는 용량은 몇 ml인지 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한0 ≤ N ≤ 10,0000 ≤ K ≤ 1,000,0000 ≤..
https://www.acmicpc.net/problem/25418입력으로 양의 정수 A와 K가 주어지면, 아래 연산을 이용하여 A를 K로 변경하려고 한다. 정수 A를 변경할 때 사용할 수 있는 연산 종류는 아래와 같다.연산 1: 정수 A에 1을 더한다.연산 2: 정수 A에 2를 곱한다.정수 A를 정수 K로 만들기 위해 필요한 최소 연산 횟수를 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ A 1697 - 숨바꼭질과 비슷한 문제다. 최소 방문 횟수를 저장할 방..
https://www.acmicpc.net/problem/2467각 용액엔 그 용액의 특성을 나타내는 하나의 정수가 주어져 있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다. 같은 양의 두 용액을 혼합한 용액의 특성값은 혼합에 사용된 각 용액의 특성값의 합으로 정의된다. 이 연구소에서는 같은 양의 두 용액을 혼합해 특성값이 0에 가장 가까운 용액을 만들려고 한다. 참고로, 두 종류의 알칼리성 용액만으로나 혹은 두 종류의 산성 용액만으로 특성값이 0에 가장 가까운 혼합 용액을 만드는 경우도 존재할 수 있다. N개의 산성 용액과 알칼리성 용액의 특성값이 정렬된 순서로 주어졌을 때, ..