문제 링크문제 설명크기가 N×M인 미로가 있고, 미로는 크기가 1×1인 칸으로 나누어져 있다. 미로의 각 칸에는 문자가 하나 적혀있는데, 적혀있는 문자에 따라서 다른 칸으로 이동할 수 있다.어떤 칸(r, c)에 적힌 문자가U인 경우에는 (r-1, c)로 이동해야 한다.R인 경우에는 (r, c+1)로 이동해야 한다.D인 경우에는 (r+1, c)로 이동해야 한다.L인 경우에는 (r, c-1)로 이동해야 한다.미로에서 탈출 가능한 칸의 수를 계산해보자. 탈출 가능한 칸이란, 그 칸에서 이동을 시작해서 칸에 적힌대로 이동했을 때, 미로의 경계 밖으로 이동하게 되는 칸을 의미한다.입력첫째 줄에 미로의 크기 N, M(3 ≤ N, M ≤ 500)이 주어진다. 둘째 줄부터 N개의 줄에는 미로의 각 칸에 적힌 문자가 주..
HTTP API란?HTTP는 웹 환경에서 정보를 주고받기 위한 프로토콜로, HTTP API는 통신 규약으로 소통하는 APIREST API란?REST는 네트워크 아키텍처 스타일(네트워크 자원을 정의하고 처리하는 방법)로, REST API는 HTTP의 장점을 최대한 활용하기 위해 만들어진 APIRESTful 설계 규칙1. URI로 자원(리소스) 표현GET /members/delete/1 (X)DELETE /members/1. (O)delete와 같은 행위에 대한 표현이 들어가면 안됨행위를 표현하고자 할 때는 HTTP Method (GET, POST, PUT, DELETE)로 표현2. 정보의 자원을 표현document, collection, store, controller 4가지 방식으로 자원을 표현..
DTO(Data Transfer Object)란?프로세스 간에 데이터를 전달하는 객체데이터를 전송하기 위해 사용하는 객체라서 그 안에 비즈니스 로직 같은 복잡한 코드는 없고 순수하게 전달하고 싶은 데이터만 담겨있음주로 클라이언트와 서버가 데이터를 주고받을 때 사용 그럼 왜 사용하느냐!사용 이유View Layer와 DB Layer의 역할을 분리하기 위해서-> 객체를 표현하기 위한 계층과 저장하는 계층의 역할을 분리하기 위해서 DTO를 사용한다.Entity 객체의 변경을 피하기 위하여-> Entity 객체를 그대로 사용하면 프로그래머의 의도와 다르게 데이터가 변질될 수 있다. View와 통신하는 DTO 클래스는 자주 변경된다-> View(클라이언트)와 통신하는 DTO 클래스, 예를 들어 ResponseDT..
Dispatcher-Servlet란?HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러과거와 비교과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 모두 등록해주어야 했지만, dispatcher-servlet이 해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주고 공통 작업을 처리면서 상당히 편리하게 이용할 수 있게 되었습니다. 우리는 컨트롤러를 구현해두기만 하면 디스패처 서블릿가 알아서 적합한 컨트롤러로 위임을 해주는 구조가 되었습니다.정적 자원 처리1. 정적 자원 요청과 애플리케이션 요청을 분리/apps 의 URL로 접근하면 Dispatcher Servlet이 담당한다./resources 의 URL로 접근하면 Dispatcher Servlet..
Spring MVC란?웹 계층에 서블릿(Servlet) API를 기반으로 클라이언트의 요청을 처리하는 모듈이 있는데 이를 스프링 웹 MVC(spring-web-mvc) 또는 스프링 MVC라고 한다.Spring MVC는 클라이언트의 요청을 편리하게 해주는 기능을 제공동작 방식과 구성 요소DispatcherServletDispatcherServlet은 HttpServlet을 상속받아 사용하고, 서블릿으로 동작한다. [CS] Spring Dispatcher-ServletDispatcher-Servlet란?HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러과거와 비교과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 모두 등록해no-delay.tistor..
Spring Framework란?자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크경량급과거 EJB가 느리고 무거운 자바 서버(WAS)에서만 동작한 반면, 스프링은 WAS로부터 독립적인 개발 환경을 구축할 수 있습니다. 가장 단순한 서버환경인 톰캣(Tomcat)이나 제티(Jetty) 위에서도 완벽하게 동작애플리케이션 프레임워크특정 계층이나, 기술, 업무 분야에 국한되지 않고 애츨리케이션의 전 영역을 포괄하는 범용적인 프레임워크 IoC(제어의 역행)코드의 최종 호출을 개발자가 결정하는 것이 아니라 스프링 프레임워크 내부에서 이루어지는 것스프링은 이미 구조가 설계되어 있어, 스프링을 사용하는 개발자는 부품을 만들어 조립하는 형태로 개발합니다. 이는 객체의 의존성을 역전시켜 객체 간..
빈 스코프란?스코프는 빈이 존재할 수 있는 범위를 뜻함종류ScopeDescriptionsingleton(기본값) 스프링 IoC 컨테이너 당 하나의 인스턴스만 사용앱이 구동되는 동안 하나만 사용prototype매번 새로운 빈을 정의해서 사용request(Web)HTTP 라이프사이클마다 한 개의 빈을 사용(웹 요청이 들어오고 나갈 때까지)Web-Aware ApplicationContext에서만 사용 가능session(Web)HTTP 세션마다 하나의 빈을 사용(웹 세션이 생성되고 종료될 때까지)Web-Aware ApplicationContext에서만 사용 가능application(Web)ServeltContext 라이프사이클 동안 한 개의 빈만 사용Web-Aware ApplicationContext에서만 사용..
PSA(Portable Service Abstraction)란?환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하는 추상화 구조(하나의 추상화로 여러 서비스를 묶어둔 것)특정 클래스가 추상화된 상위 클래스를 일관되게 바라보며 하위 클래스의 기능을 사용하는 것이 PSA의 기본 개념PSA가 적용된 코드는 개발자의 기존에 작성된 코드를 수정하지 않으면서 확장할 수 있으며, 어느 특정 기술에 특화되어 있지 않음 -> 확장성 높음왜 사용하나요?어떤 서비스를 이용하기 위한 접근 방식을 일관된 방식으로 유지하여애플리케이션에서 사용하는 기술이 변경되더라도 최소한의 변경만으로 변경된 요구 사항을 반영하기 위해 사용 => PSA를 통해서 애플리케이션의 요구 사항 변경에 유연하게 대처 가능 Spring은 상황..