전체 글

창의의 개발블로그입니다.
· 백준
12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net 문제 문자열 S가 주어졌을 때 2가지 연산을 진행하여 주어진 T를 만족하는 문자열을 만들 수 있는지 여부를 검사하여 출력하시오. 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; class Main { public static int answer = 0; public ..
· Spring
개요 Spring Boot의 유효성 검증 중 한 방법인 org.hibernate.validator.constraints 사용하면서 유효성 검증에 실패할 때 던져지는 MethodArgumentNotValidException 를 효과적으로 처리할 방법을 찾던 중 발견한 어노테이션 ControllerAdvice 는 컨트롤러에 AOP를 적용시켜주는 어노테이션으로써 부가 기능을 더해줄 수 있다. RestControllerAdvice 는 RestController 와 동일하게 ControllerAdvice + ResponseBody 의 역할을 한다. 즉, 뷰를 렌더링하는 과정 없이 JSON 형태의 응답을 반환한다. 활용 ControllerAdvice를 통해서 예외에 대한 처리 핸들러를 구현하였다. 먼저 유효성 검증..
· Spring
서비스 계층 단위 테스트 서비스 계층의 단위 테스트는 이전 포스트를 참고해주세요. [Spring Boot] Mockito를 사용한 단위 테스트 종속성 제거 원인 서비스 계층의 테스트를 작성하면서 assertJ로 테스트를 작성했다. Service계층은 DAO에 종속되어 메소드를 사용하기 때문에 DAO를 통해서 새로 만들어진 객체를 삭제해주어야 했고 DAO를 통해서 g-db.tistory.com 이번 포스트에서는 MockMvc를 사용하여 컨트롤러 계층의 테스트를 진행하겠다. MockMvc MockMvc는 이름 그대로 Mvc를 목킹해주는 객체이다. Http 요청을 보내 스프링 MVC를 테스트할 수 있다. 기본 설정 @WebMvcTest(AuthController.class) public class AuthCo..
· 백준
1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 문제 N개의 정수가 주어졌을 때, X라는 정수가 있는지 없는지 여부를 출력하시오. 풀이 정렬 A = new int[N]; for(int i=0; i t ? binarySearch(t, start, mid) : binarySearch(t, mid+1, end); } 이진 탐색을 다음과 같이 재귀로 구현하였다. 중심값을 구한다. 만약 현재 탐색할 영역이 1개 밖에 없고, 그 값이 타겟값과 다르다면 존재하지 않는 값이므..
· Spring
원인, 문제 테스트 코드에 대한 공부를 하면서 여러 영상들을 서칭하여 시청했다. 그런데 어떤 영상에서는 Mock 객체에 대한 행위를 정의할 때 when() 메소드를 사용하고 다른 영상에서는 given() 를 사용했다. 그래서 둘의 차이점이 무엇인지 찾아보았다. Mockito Mockito 프레임워크는 개발자가 테스트를 진행할 때 Controller가 의존하는 Service 객체를 실제 Service객체를 대신할 Mock객체로 대체하기 쉽게 해준다. 쉽게 말해서 Controller가 의존하는 Service 때문에 Controller Test에 영향을 주지 않도록 Service 객체의 역할을 수행하는 척 하는 클래스를 대체해줘야한다. 이는 Mockito를 사용하지 않으면 개발자가 직접 Service 클래스와..
· 백준
1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 문제 양방향 간선이 주어졌을 때 가장 거리가 먼 두개의 정점을 구하세요 풀이 이 문제의 힌트는 어느 한 정점에서 다른 정점까지의 거리를 구했을 때 가장 큰 거리를 가지는 정점이 가장 거리가 먼 두개의 정점 중 하나라는 것이다. Node public static class Node{ int edge; int distance; public Node(int edge, int distance){ this.edge = edge; this.distance ..
· 백준
2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 문제 2차원 배열이 주어졌을 때 1이 있는 곳만 이동할 수 있다. (0, 0)에서 (N-1, M-1)까지의 최소 경로의 이동 횟수를 구하여라 ( (0,0)에서 시작할때도 횟수 1추가 ) 풀이 값을 받아준다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); N = Integer.parseInt(st.ne..
· 백준
1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 간선이 주어졌을 때 너비 우선 탐색과 깊이 우선 탐색의 결과 값을 구하시오. 단, 여러 정점으로 방문할 수 있다면 작은 값부터 방문하세요 풀이 먼저 값을 받아줍니다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); int N =..
창e
창의