java

    [Java] Optional의 개념과 사용

    [Java] Optional의 개념과 사용

    Optional의 등장 프로그래밍을 하다보면 NullPointException을 종종 보게 된다. null을 리턴하면 안되는데 null을 리턴하는 경우 생기는 예외인데, 이를 처리하는 방법은 크게 2가지가 있다. 예외를 던지는 방법 public Something getSomething() { if(this.something == null) throw new IllegalStateException(); return something; } 예외를 던질 때 자바는 stack trace에 대한 정보를 생성하고 보여주는데, 이는 리소스를 사용하기 때문에 로직 처리에 예외 처리를 하지 않는 것이 좋다. 따라서 클라이언트 코드가 null을 체크하는 방법을 주로 사용한다. 클라이언트 코드가 null을 체크하는 방법 P..

    [Java] Supplier 함수 인터페이스와 Lazy Evaluation

    [Java] Supplier 함수 인터페이스와 Lazy Evaluation

    Supplier T타입의 값을 제공하는 함수 인터페이스이다. T타입의 값을 제공 받고 리턴도 하지 않아 이 인터페이스가 왜 필요한지 의문이 들 수 있는데 주로 Lazy Evaluation에 사용이 된다. Lazy Evaluation 불필요한 연산을 피하기 위해 연산을 지연시켜놓았다가 필요할 때 연산하는 방법. 예시를 통해 Lazy Evaluation에 대해 알아보자. 1. printState에서는 valid가 true이면 value + word, false이면 wrong world를 출력한다. public void printState(boolean valid, String value) { if(valid) { System.out.println(value + " world"); } else { System..

    [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..

    [백준] 9205 맥주 마시면서 걸어가기 (JAVA)

    ✉️문제 https://www.acmicpc.net/problem/9205 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net 📝 접근 DFS와 BFS의 경계가 모호한 문제인 것 같다. 개인적으로 Queue를 이용하는 것 보다는 DFS가 좋아 DFS를 이용하여 풀이하였다. 🗝 문제풀이 1. 첫 입력으로 테스트 개수가 주어진다. 따라서 테스트 개수를 이용한 for문을 돈다. 2. 편의점의 수가 주어지는데, 이 좌표들을 store 배열에 저장하였다. 3. 편의점을 방문했는지 체크하기 위해 visited 배열을 ..

    [백준] 2501 약수 구하기 (JAVA)

    ✉️문제 https://www.acmicpc.net/problem/2501 2501번: 약수 구하기 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. www.acmicpc.net 📝 접근 브루트 포스 알고리즘, 즉 완전탐색 알고리즘을 이용한다. 🗝 문제풀이 import java.util.Scanner; public class B2501 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); int cnt = 0; int answer = 0; for(int i = 1; i