이번 시간에는 mvc 패턴을 이용한 간단한 예제를 알아보겠다. 우선 설명의 이해를 돕기 위해 코드와 함께 알아보자. --홈 화면-- package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController{ @GetMapping("/") public String home(){ return "home"; } } 새로운 컨트롤러를 하나 만들고 루트(/)에 대해 getmapping해준다. 그리고 html파일을 하나 만들어서 간단한 화면을 보여준다.(..
이번 포스팅에서는 스프링 빈이 무엇인지와 그들간의 의존성에 대해 알아보겠다. 스프링 빈이란? 스프링이 돌 때, 컨트롤러 annotation을 보고 컨테이너에 넣어서 관리 = 스프링 빈이라고 함. 컨트롤러가 서비스를 통해 작업을 함 = 컨트롤러가 서비스에 의존적이라고 함 코드로 표현하면, 컨트롤러는 생성자에 인자로 서비스를 받는다 => 생성자 주입(DI의 방법중 하나) 멤버 컨트롤러 생성자에 멤버 서비스를 파라미터로 받는다 -> 서비스에 의존적 spring에서 의존성 주입(Dependency Injection)의 방법은 두가지가 있다. 1.컴포넌트 스캔 사실 컨트롤러에서 서비스를 new로 생성하면 다른 컨트롤러가 멤버 서비스를 가져다 쓸 수 있다. 이걸 방지하기 위해 스프링 컨테이너에 등록..
https://www.acmicpc.net/problem/3197 3197번: 백조의 호수 입력의 첫째 줄에는 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1500. 다음 R개의 줄에는 각각 길이 C의 문자열이 하나씩 주어진다. '.'은 물 공간, 'X'는 빙판 공간, 'L'은 백조가 있는 공간으로 나타낸다. www.acmicpc.net 백준에서 bfs를 많이 연습했다면 크게 어렵지는 않았을 거라 생각한다. 문제를 풀이해보겠다! 우선, 백조의 위치를 vector에 저장한다. 그리고 물과 백조의 위치를 wq라는 큐에 저장해놓는다. 백조의 위치를 물의 위치와 같이 저장하는 이유는, 백조도 물에 떠있기 때문이다!! 만약 백조가 X에 둘러 쌓여져 있는 상황에 처할 경우, 다음 날이 되면 물의 영향으로 길이 생..
우선, 비즈니스 요구 사항을 정리한다 - 데이터 : 회원 ID, 이름 - 기능 : 회원 등록, 조회 - DB는 선정되지 않음(이라고 가정) - 컨트롤러 : 웹 MVC의 컨트롤 역할 - 서비스 : 핵심 비즈니스 로직 구현 - 리포지토리 : DB에 접근, 도메인 객체를 DB에 저장하고 관리 - 도메인 : 비즈니스 도메인 객체 (ex. 회원, 주문, 쿠폰 등 주로 DB에 저장되고 관리됨) - 아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계(MemberRepository) - 데이터 저장소는 RDB, NoSQL 등등 다양한 저장소를 고민중인 상황으로 가정(개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용) --------..
주사위는 6개의 면을 가진다 -> 크기 6의 배열로 관리 주사위는 앞,뒤,좌,우로 구를 때 마다 면이 바뀐다 ex) 우로 구르면, 오른쪽면이 바닥면이 된다. => 배열의 인덱스마다 주사위의 한 면씩 매칭시켜준다. 그리고 주사위가 특정 방향으로 구를 때마다, 바뀐 것을 원래 설정해놓은(= 매칭시켜놓은) 인덱스로 설정해주면 된다. 자세한 내용은 주석에 달아놓았다. 문제 난이도치고는 쉽게 풀었다. 중간에 풀면서 바뀌는 상태를 원형 큐로 관리할 수 있지않을까 생각도 해보았는데, 시간있을 때 도전해봐야겠다 #include #include #include #include using namespace std; int n,m,x,y,k,order; int board[21][21]; int bottom = 5; in..