- 알고리즘 분류 : BFS - 사용 언어 : JAVA - 문제 요점 비가 많이 와서 특정 지역이 물에 잠길 수도 있다. 상하좌우 인접한 지역을 하나의 안전구역이라고 한다. 물의 높이에 따라 가장 많은 안전구역의 갯수를 반환하는 문제 물의 높이는 0~가장 높은 지역의 높이까지만 확인 물의 높이를 바꿔가며 BFS를 이용하여 안전구역의 갯수 확인 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public..
Algorithm
- 알고리즘 분류 : 에라토스테네스의 체 - 사용 언어 : JAVA - 문제 요점 두 수 사이의 소수를 모두 구하는 문제 에라토스테네스의 체를 이용하여 풀이하면 비교적 간단하게 풀이 가능 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { //각 수가 소수인지 아닌지 (true : 소수, false:소수X) public static boolean[] arr; // 에라토스테네스의 체 이 public static void..
- 알고리즘 분류 : BFS - 사용 언어 : JAVA - 문제 요점 수빈이는 지정된 범위(0~100000) 내에서 자유롭게 움직일 수 있음. BFS를 이용하여 K까지 가는 데 최소 소요 시간을 출력 가능 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { // N : 수빈이의 위치 // K : 동생의 위치 public static int N, K; // 동생에게 가는 ..
- 알고리즘 분류 : DFS - 사용 언어 : JAVA - 문제 요점 두 사람 사이의 관계의 수를 구하는 문제 DFS를 이용해 구하면 쉽게 풀이 가능 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class Main { // N : 사람의 수, M : 관계의 개수 // TARGET1, TARGET2 : 촌수를 계산해야하는 두 사람 public static int N, M, TARGET1, TARGET2; // 방문 체크 변수 pub..
- 알고리즘 분류 : DFS - 사용 언어 : JAVA - 문제 요점 1번 컴퓨터로부터 DFS탐색을 진행하여 만나는 노드의 갯수를 반환하여 풀이 가능 DFS에 대해 잘 이해하고 있다면 간단한 문제임 소스 설명은 주석을 참고해주세요 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class Main { // N : 컴퓨터의 수 // M : 네트워크 수 public static int N,M; // 그래프 변수 public static ArrayList graph = n..
- 알고리즘 분류 : 크루스칼 알고리즘 - 사용 언어 : JAVA - 문제 요점 최소 스패닝 트리(최소 신장 트리)를 구하는 문제 크루스칼 알고리즘(최소 신장 트리를 구하는 알고리즘)과 우선순위 큐(비용이 적은 것을 먼저 꺼내는 큐)를 이용하여 풀이 가능 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.PriorityQueue; import java.util.StringTokenizer; public class Main { // V : 정점의 개수 // M : 간선의 개수 public static int V, M; // 각 ..
- 알고리즘 분류 : DFS (BFS로도 풀이 가능) - 사용 언어 : JAVA - 문제 요점 DFS로 계속 깊은 곳을 가는 것이 아닌, 방문 가능한 노드를 다 확인하며 진행한다. 양보다 늑대의 수가 많거나 작으면 다 잡아 먹힌다. (DFS 탈출) 노드를 방문할 때마다 양과 늑대의 수를 체크하고 방문을 체크하며 DFS를 진행한다. 효율성 테스트가 없어 간단하게 작성한 코드입니다. (방문 체크 변수를 ArrayList로 추가하고 방문한 노드들만 추가하는 방향으로 하면 더욱 빠를 것이다.) 소스 설명은 주석을 참고해주세요. import java.util.*; class Solution { // map 변수 public static ArrayList map = new ArrayList(); // 양의 수 pu..
- 알고리즘 분류 : 그리디 알고리즘 - 사용 언어 : JAVA - 문제 요점 우선순위 큐를 이용하여 시간이 적게 걸리는 음식 순대로 확인 음식을 먹는데 시간이 적은 순서대로 확인하기 때문에, 뒤에 있는 음식들은 현재 음식보다 무조건 시간이 많거나 같다는 것을 인지하고 풀이 소스 설명은 주석을 참고해주세요. import java.util.*; // 음식 클래스 선언 class Food implements Comparable { // 먹는 시간 private int time; // 음식 번호 private int index; public Food(int time, int index) { this.time = time; this.index = index; } public int getTime() { retu..