java

    Spring Request 데이터를 List 형태로 받으면 @Valid 체크가 안되는 현상 해결 방법

    Spring Request 데이터를 List 형태로 받으면 @Valid 체크가 안되는 현상 해결 방법

    Spring does not check valid when list data is databinding 다음과 같은 예시가 있습니다. 스프링에서 Controller 로 데이터가 넘어올 때 [java.util.List] 형태의 데이터만 넘어와서 해당 List에 맞게 DTO를 만들어서 List로 데이터를 받는데, List 안의 데이터에 대해서 분명히 조건 체크를 하게 했는데 Null로 데이터가 넘어온 데이터로 작업하게 되어 에러가 발생한다 ????? 위 문제로 인해 저도 여러 해결 방법을 찾아봤는데요 특히, "Custom Validator를 만들어서 체크하면 된다" 하는 글이 대부분이었습니다. 위 Custom Validator가 아닌 방법으로 좀 더 손쉽게 해결 가능하도록 해봅시다. 우선 이유부터 알아봅시다..

    백준 15596, 정수 N개의 합

    문제 정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오. 작성해야 하는 함수는 다음과 같다. Java: long sum(int[] a); (클래스 이름: Test) a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000) 리턴값: a에 포함되어 있는 정수 n개의 합 입력 출력 예제입력 예제출력 문제풀이 지문을 읽으면서 함수? 어떤 함수말하는거지? Function 인터페이스 말하는건가? 도대체 뭔 소리지 ? 했는데;;;;;; 메소드(함수)를 만들라는 뜻이었다. public class Test { long sum(int[] a) { long ans = 0; for(int data : a){ ans+=data; } retu..

    백준 8958, OX퀴즈

    문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다. 출력 각 테스트 케이스마다 점수를 출력한다. 예제입력 예제출력 5 OOXXOXXOOO OOXXOOXXOO OXOXOXOXOXOXOX O..

    백준 3052, 나머지

    문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 출력 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다. 예제입력 예제출력 1 2 3 4 5 6 7 8 9 10 10 42 84 252 420 840 126 42 84 420 126 1 문제풀이 이번 문제는 Set을 활용해보았다. 중복되는 값이 있을 경우는 넘..

    백준 2577, 숫자의 개수

    문제 세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오. 예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다. 입력 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. 출력 첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각..

    백준 2562, 최댓값

    문제 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다. 입력 첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다. 출력 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다. 예제입력 예제출력 3 29 38 12 57 74 40 85 61 85 8 문제풀이 간단하게 생각해보자. 9개의 자연수라는 값이 정해져 있고 index 위치와 max 인지 여부만 조건으로 확인하며 결과값을 최신화 해주면 되겠다..

    객체 지향, 오브젝트와 의존 관계의 이해

    Connection을 통한 오브젝트와 의존관계의 이해 public class UserDao { public void add(User user) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.cj.jdbc.Driver"); Connection c = DriverManager.getConnection( "jdbc:mysql://localhost/springbook","spring","book"); PreparedStatement ps = c.prepareStatement( "insert into users(id, name, password) values(?, ?, ?)"); ps.setString(1, user.getId());..

    에러, java.lang.IllegalStateException: stream has already been operated upon or closed

    에러, java.lang.IllegalStateException: stream has already been operated upon or closed

    문제 스트림으로 백준 알고리즘 연습 도중 발생, 코드는 다음과 같다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.OptionalInt; import java.util.stream.Stream; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(..