목록분류 전체보기 (73)
delpho
Think 처음에는 벽 위치를 저장해두고, 하나씩 벽을 없애면서 모든 경우의 수를 dfs 했다. 그런데… 알고보니 시간복잡도가 NM^2였다. https://kscodebase.tistory.com/66를 참고했다. int[][][] isVisited를 활용하여, 벽을 뿌신 경우와 안뿌신 경우를 구분해서 관리할 수 있었다. DFS는 가중치가 없을 경우(다익스트라를 사용하지않아도 되는 경우), 무조건 최단거리를 보장한다. 또한, Queue 특성상, 벽을 뚫고 가는 경우와 안뚫고 돌아가는 경우 모두 체크가 가능하다 이 개념이 이 문제를 푸는 아이디어를 이해하는데에 중요한 포인트라고 생각한다 왜냐면…. 벽을 안 부수고도 현재 칸까지 도달이 가능하지만, 벽을 부수고 오는 것이 더 짧다고 가정해봅시다. 현재 지점에..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Cnz0M/btsGq1SLnYq/qqUXWBpcXs4S1Hs1fqAr6k/img.png)
1. MVC Pattern 등장 배경 MVC 패턴은 JSP의 등장 이후 제안된 패턴이 아니라, 1970년대 후반에 제안된 패턴입니다. Smalltalk 언어를 고도화하는데에 사용되었다고 알고 있습니다. (이전 포스팅 참고) 프레젠테이션 로직과 비즈니스 로직이 분리되어있지 않은 Servlet의 단점을 해결하기 위해 JSP가 등장하였고, 이 JSP를 더욱 효과적으로 사용하기 위해 MVC 패턴을 적용하기 시작했습니다. [ Servlet과 JSP ] Servlet 코드 @WebServlet(name = "memberSaveServlet", urlPatterns = "/servlet/members/save") public class MemberSaveServlet extends HttpServlet { priva..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/lxt9V/btsGmy3P64b/RPvyqZ1ty5z0w2pctGQkak/img.png)
[ 0. 들어가기 전 ] Servlet 등장 이후 JSP 라는 기술이 추가로 등장하게 되었는데, 관련해서 내용을 정리해보았습니다. [ 1. JSP의 등장 배경 ] 서블릿의 등장으로, CGI 프로그래밍의 한계를 개선했지만, 또다른 단점이 존재하였습니다. Servlet을 통해 HTTP 요청을 처리하고 동적 컨텐츠를 생성 후 응답으로 반환해주어야하는데, 프레젠테이션 로직(ex. HTML 코드)과 비즈니스 로직이 혼합되어 코드관리가 어려웠습니다. 서블릿의 복잡성: 초기 웹 애플리케이션 개발은 주로 서블릿을 통해 이루어졌습니다. 서블릿은 Java 코드 안에서 HTML을 출력하는 방식으로 동작했는데, 이는 코드가 복잡해지고 유지 보수가 어려워지는 문제가 있었습니다. 페이지 디자인의 어려움: 디자이너와 개발자 간의 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/brY618/btsGjjS0aqE/KZiXEdhgxvNW67FTmsYSeK/img.png)
[ 0. 들어가기 전 ] 바로 이전 포스팅에서는 스프링 프레임워크가 어떻게 등장하게 됐는지를 www의 탄생부터 지금까지 시간 순서대로 알아보았습니다. CGI의 한계로 Servlet이 등장하게 되었는데, 이 Servlet은 서버에서의 핵심 기술이기에 여러 출처를 기반으로 정리해보았습니다. [ 1. Servlet의 등장 배경 ] 초창기 웹 서비스의 서버는 정적 데이터만 전달해주는 기능을 가지고 있었습니다. 하지만, 사용자의 요청에 따른 동적인 처리가 불가능했고, 이를 해결하기위해 등장한 것이 CGl입니다. CGl (Common Gateway Interface)는 동적 데이터를 처리하는 Web Server와 프로그램 사이의 인터페이스(규약)입니다. CGI는 Web Server의 요청을 받으면, 동적 컨텐츠를 ..