Optional에 관한 블로그 글을 보게 됐는데 내용이 좋아서 따로 블로그에 정리하려고 한다. 원본 글은 아래 reference에 있다. Optional 이란? NPE(NUllPointerException)를 피하기 위해서는 null 여부를 검사해야 하는데, null 검사를 해야하는 변수가 많은 경우 코드가 복잡해지고 번거롭다. 그래서 Java에는 null이 올 수 있는 값을 감싸는 Wrapper 클래스인 Optional을 사용하면 참조하더라도 NPE가 발생하지 않게 할 수 있다. 메소드 Optional.empty() 값이 없는 경우에, Optional을 생성하고 싶을 때 사용할 수 있다 아래 코드를 보면 Optional.empty()를 해도 static 변수인 EMPTY를 리턴한다. 따라서 여러번 호출..
먼저 공백을 print하고 *을 프린트 해주면 된다 import java.io.BufferedReader; import java.io.InputStreamReader; class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); for (int i = 1; i
입력값이 엄청 큰 숫자이다. 최대 10^1000까지 값이 들어올 수 있는데 이 값은 Long의 범위도 벗어난다. 자바에서는 이럴 때 정수형이므로 BigInteger를 사용하면 된다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.math.BigInteger; import java.util.StringTokenizer; class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = ne..
앞으로 푸는 모든 문제에 대해 정리하려 한다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.n..

플러드 필(flood fill) 혹은 시드 필(seed fill)은 다차원 배열의 어떤 칸과 연결된 영역을 찾는 알고리즘이다. - 위키백과 위와 같은 다차원 배열이 있다고 가정했을 때, 검은색으로 칠해진 부분은 연결되지 않은 영역이라고 하자. 그러면 위의 다차원 배열에 대해서 특정 칸과 연결된 영역을 찾고 싶을 때 플러드 필 알고리즘을 이용해서 찾을 수 있다. (연결된 영역은 상하좌우로 접근 가능한 경우이다) 만약 0.0과 연결된 영역을 찾는다면 아래와 같은 영역이 찾아진다. 또한 0.3과 연결된 영역을 찾으면 아래와 같은 영역이다.이렇게 연결된 영역을 찾고 싶을 때 사용할 수 있는 알고리즘이 플러드 필 알고리즘이다. 스택 기반이나 큐 기반으로 구현할 수 있다. 자세한 사항은 아래 위키백과를 참조하자. ..
링크 : www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 문제는 알파벳이 들어왔을 때 각 알파벳마다 0부터 9까지 숫자 중 하나로 바꿨을 때의 합의 최댓값을 구하는 문제입니다. 일단 경우의 수는 10! 가지이기 때문에 시간 초과가 발생하지 않지만 각 경우마다 합을 구하는 로직이 들어가기 때문에 그렇게 하면 시간 초과가 발생하게 됩니다. 그래서 다른 방법을 생각해봤는데 문제를 잘 보시면 제일 앞 자릿수에 큰 수를 할당하면 문제를 풀 수 있습니다. 예를 들..
idea-sketch.tistory.com/29 [알고리즘] 되추적(Backtracking)을 알아보자. 오늘의 주제는 되추적(Backtracking) 이다. 저번 포스팅인 깊이우선탐색(Depth-First Search)과 넓이우선탐색(Breath-First Search)의 몸풀기를 거치고 최단경로(Shortest Path) 알고리즘에 들어가는 첫 걸음이라.. idea-sketch.tistory.com 여기에 설명이 잘 되어 있다. 요지는 dfs를 스택을 이용하여 구현한다면 "스택을 사용하고 스택에 넣기 전에 유망성 검사를 한다. 유망성 검사 조건을 어떻게 할 것인가" 인 것 같다
- Total
- Today
- Yesterday