전체 글

최고의 프론트엔드 개발자가 되겠습니다.
이제 우리는 서비스를 화면에 띄우고 싶다. 이를 위해 MemberController 을 만들어야 하는데 이 컨트롤러는 전에 만든 MemberService를 통해 회원 가입, 데이터 조회 등이 가능해야한다. 이를 컨트롤러가 MemberService를 의존한다고 표현한다. 위와 같이 main -> java -> com.example.hellospringboot -> controller 에 MemberController 라는 Class를 만들어준다. 이 클래스에 위와 같은 코드 틀을 작성한다. Spring을 실행하면 스프링 컨테이너가 생기는데 이 때 @Controller 어노테이션이 있으면 해당 클래스의 객체를 생성하여 컨테이너에 넣어둔 후 Spring이 이를 관리한다. 이를 흔히 컨테이너에서 스프링 빈이 관..
이제 만든 회원 서비스를 테스트해보자. Intellij에 들어가서 만들어준 MemberService 클래스에 들어가서 ctrl+shift+T 를 누르면 새 테스트 생성하기라는 버튼이 나온다. 이를 클릭하면 위와 같은 화면이 나오고, 라이브러리 테스트 항목은 JUnit5로 해주고, 아래의 테스트 메서드 생성 칸에 모두 체크해준 뒤 확인을 누른다. 그러면 위와 같이 자동으로 MemberServiceTest 라는 클래스가 생성되는 것을 확인할 수 있다. MemberService memberService=new MemberService(); 우선 위와 같이 MemberServiceTest 클래스에 memberService라는 MemberService 객체를 만들어주자. 먼저 MemberService의 join ..
이제 회원 서비스를 개발해보자. main -> java -> com.example.hellospringboot 로 가서 service라는 Package를 하나 만들어주고, 그 안에 MemberService라는 Class를 하나 만들어주자. 이 클래스 안에 위와 같은 코드를 작성해 주었다. 먼저 이전에 작성해 주었던 MemberRepository 타입을 가지는 memberRepository 객체를 상수로 선언해준다. 일단 가입하려는 이름과 같은 이름이 이미 store에 저장되어 있으면 그 회원은 가입이 불가하도록 하는 로직을 구현해보았다. join함수는 ValidateDuplicateMember 함수를 실행하고 Member객체를 매개변수로 받는다. ValidateDuplicateMember 함수는 이전에 ..
문제 매일 아침 9시에 학교에서 측정한 온도가 어떤 정수의 수열로 주어졌을 때, 연속적인 며칠 동안의 온도의 합이 가장 큰 값을 알아보고자 한다. 예를 들어, 아래와 같이 10일 간의 온도가 주어졌을 때, 3 -2 -4 -9 0 3 7 13 8 -3 모든 연속적인 이틀간의 온도의 합은 아래와 같다. 이때, 온도의 합이 가장 큰 값은 21이다. 또 다른 예로 위와 같은 온도가 주어졌을 때, 모든 연속적인 5일 간의 온도의 합은 아래와 같으며, 이때, 온도의 합이 가장 큰 값은 31이다. 매일 측정한 온도가 정수의 수열로 주어졌을 때, 연속적인 며칠 동안의 온도의 합이 가장 큰 값을 계산하는 프로그램을 작성하시오. https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에..
이제 회원 리포지토리가 잘 동작하는지 알아보기 위한 테스트케이스를 작성해보도록 하자. 개발한 기능을 실행하여 테스트 할 때 자바의 main 메소드를 통해 실행하거나, 웹 애플리케이션 컨트롤러를 통해서 해당기능을 수행하는 방법들도 있지만 이 방법들은 시간이 오래 걸리고, 반복 수행이 어렵고, 여러 테스트를 한번에 실행하기 어렵다는 단점이 있다. 이 단점을 해결하기 위해 자바는 JUnit 이라는 프레임워크로 테스트를 실행한다. 먼저 test -> java -> com.example.hellospringboot 에 가서 repository 라는 package를 만들어준다. 그리고 이 패키지 안에 MemoryMemberRepositoryTest 라는 Class를 하나 만들어준다. 이 클래스에 위와 같은 테스트 ..
문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net import sys N,M=map(int,sys.stdin.readline().split()) num_list=list(map(int,sys.stdin.readline().split())) sum=[] sum.append(0) for x in range(1,N+1): sum.app..
문제 이 문제는 아주 평범한 배낭에 관한 문제이다. 한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다. 준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자. https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N..
이제 회원 관리 예제를 한번 만들어보자!! 비즈니스 요구 사항은 다음과 같다고 하자. ● 데이터: 회원 ID, 이름 ● 기능: 회원 등록, 조회 ● 아직 데이터 저장소는 선정되지 않음 일반적인 웹 애플리케이션 구조를 한번 알아보자 ● 컨트롤러: 웹 MVC의 컨트롤러 역할 ● 서비스: 핵심 비즈니스 로직 구현 (회원은 중복가입이 안된다는 로직 등) ● 리포지토리: DB에 접근, 도메인 객체를 DB에 저장하고 관리 ● 도메인: 비즈니스 도메인 객체(회원, 주문, 쿠폰 등 주로 DB에 저장하고 관리됨) 클래스 의존관계에 대해 알아보도록 하자. 아직 데이터 저장소가 선정되지 않았기 때문에 인터페이스로 구현 클래스를(MemberRepository) 변경할 수 있도록 설계한다(데이터 저장소는 RDB, NoSQL 등..
문제 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net import sys A=list(sys.stdin.readline().rstrip()) B=list(sys..
문제 두 전봇대 A와 B 사이에 하나 둘씩 전깃줄을 추가하다 보니 전깃줄이 서로 교차하는 경우가 발생하였다. 합선의 위험이 있어 이들 중 몇 개의 전깃줄을 없애 전깃줄이 교차하지 않도록 만들려고 한다. 예를 들어, 과 같이 전깃줄이 연결되어 있는 경우 A의 1번 위치와 B의 8번 위치를 잇는 전깃줄, A의 3번 위치와 B의 9번 위치를 잇는 전깃줄, A의 4번 위치와 B의 1번 위치를 잇는 전깃줄을 없애면 남아있는 모든 전깃줄이 서로 교차하지 않게 된다. 전깃줄이 전봇대에 연결되는 위치는 전봇대 위에서부터 차례대로 번호가 매겨진다. 전깃줄의 개수와 전깃줄들이 두 전봇대에 연결되는 위치의 번호가 주어질 때, 남아있는 모든 전깃줄이 서로 교차하지 않게 하기 위해 없애야 하는 전..
brian99
정상을 향해~