자바

    [Java] 자바에서 제공하는 함수형 인터페이스

    Function T타입을 받아서 R타입을 리턴하는 함수형 인터페이스 함수 조합용 메소드 : andThen, compose [예제] compose는 (...)안의 람다식을 먼저 계산한다. andThen은 plus를 먼저 계산하고 (...)안의 람다식을 계산한다. Function plus = (num) -> num + 5; Function multiply = (num) -> num * 2; Function world = (s) -> s + " world"; System.out.println(plus.apply(5)); // 10 System.out.println(multiply.apply(5)); // 10 System.out.println(world.apply("hello")); // hello world..

    [Java] 함수형 인터페이스와 람다 표현식

    등장 배경 함수형 인터페이스와 람다식이 등장한 이유를 알기 위해 다음 Person 인터페이스와 이를 구현한 Student 클래스를 보자. interface Person { void study(String subject){} } class Student implement Person { @Override public void study(String subject) { System.out.println(subject + " 공부"); } } 인터페이스를 구현하는데 상당히 많은 줄을 차지한다. 이것을 해결하기 위해 자바8에서부터 람다식을 지원한다. 람다식은 코드를 간결하게 만들기 위해 등장한 만큼 추측할 수 있는 모든 정보를 제거하여 간결하게 표현한다. 위의 코드를 람다식으로 표현하면 다음과 같다. Perso..

    [알고리즘] 최대 공약수, 최소공배수

    [알고리즘] 최대 공약수, 최소공배수

    최대 공약수를 구하는 알고리즘 중 가장 유명한 유클리드 호제법에 대해 알아보자. 유클리드 호제법 a를 b로 나눈 나머지를 r이라고 할 때, GCD(a, b) = GCD(b, r)이다. r이 0일 때의 b가 최대 공약수이다. 위의 정의를 GCD(24, 16)을 통해 알아보자. 1. 24(a)를 16(b)로 나눈다. 24 % 16 = 8(r) 2. 16(b)를 8(r)로 나눈다. 3. 8(b)와 0(r)을 계산해야 하는데 r = 0이므로 이 때의 b값인 8인 최대 공약수가 된다. int gcd(int a, int b) { while ( b != 0) { int r = a % b; a = b; b = r; } return a; } 최소공배수 최소공배수는 LCM이라고 하며 GCD를 응용해서 구할 수 있다. 최소..

    [백준] 17427 약수의 합2 (Java)

    [백준] 17427 약수의 합2 (Java)

    ✉️문제 https://www.acmicpc.net/problem/17427 17427번: 약수의 합 2 두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더 www.acmicpc.net 📝 접근 https://brightmango.tistory.com/345 [알고리즘] 약수 알고리즘 A와 B라는 숫자가 있을 때 A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 이런 약수를 구하는 방법은 3가지가 있다. 모든 자연수로 나누는 방법 : O(n) 말 그래도 1부터 N까지 모든 수로 나누어 brightmango..

    [Spring] BindingResult를 이용한 검증

    [도입] 컨트롤러의 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 이 때 검증은 클라이언트와 서버단에서 모두 이루어 지는게 좋다. 그 이유는 다음과 같다. 클라이언트 검증은 조작할 수 있으므로 보완에 취약하다. -> 데이터를 조작해서 서버로 보낼 수 있다. 서버만으로 검증하면, 즉각적인 고객 사용성이 부족해진다. 따라서 둘을 적절히 섞어서 사용하되, 최종적으로 서버 검증은 필수적이다. Spring에서는 서버단에서 검증을 할 때 에러를 확인하고 이를 view로 쉽게 전달하기 위해서 BindingResult객체를 제공한다. [BindingResult] 보통 errors 메세지를 담고 활용하기 위해 HashMap을 이용하는데, 스프링은 이를 더 쉽게 처리하기 위해 BindingResult객체를 제..