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 Boot의 유효성 검증 중 한 방법인 org.hibernate.validator.constraints 사용하면서 유효성 검증에 실패할 때 던져지는 MethodArgumentNotValidException 를 효과적으로 처리할 방법을 찾던 중 발견한 어노테이션 ControllerAdvice 는 컨트롤러에 AOP를 적용시켜주는 어노테이션으로써 부가 기능을 더해줄 수 있다. RestControllerAdvice 는 RestController 와 동일하게 ControllerAdvice + ResponseBody 의 역할을 한다. 즉, 뷰를 렌더링하는 과정 없이 JSON 형태의 응답을 반환한다. 활용 ControllerAdvice를 통해서 예외에 대한 처리 핸들러를 구현하였다. 먼저 유효성 검증..
서비스 계층 단위 테스트 서비스 계층의 단위 테스트는 이전 포스트를 참고해주세요. [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개 밖에 없고, 그 값이 타겟값과 다르다면 존재하지 않는 값이므..
원인, 문제 테스트 코드에 대한 공부를 하면서 여러 영상들을 서칭하여 시청했다. 그런데 어떤 영상에서는 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 =..