- 알고리즘 분류 : 다익스트라 알고리즘 - 사용 언어 : JAVA - 문제 요점 소를 비용이라고 생각한다. 다익스트라 알고리즘에 대해 알고있으면 쉬운 문제 결과 출력 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.PriorityQueue; import java.util.StringTokenizer; public class Main { public static int N, M; public static ArrayList map =..
Algorithm
- 알고리즘 분류 : BFS - 사용 언어 : JAVA - 문제 요점 익은 토마토들을 큐에다가 넣어둔다. 큐가 빌 때까지 큐에서 익은 토마토들을 꺼내고, 상하좌우를 확인한다. 상하좌우 중, 안익은 토마토가 있으면 큐에 넣고 카운트하고 탐색 진행 범위를 벗어나거나, 안익은 토마토가 아니면 무시 결과 출력 소스 설명은 주석을 참고해주세요. 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 { // 토마토에 대..
- 알고리즘 분류 : 구현 - 사용 언어 : JAVA - 문제 요점 땅 주위의 상하좌우에 인접한 바다가 3개 이상이면 녹는다. 주어진 지도의 범위 바깥은 바다로 쳐야한다. 땅이 녹으면 그에 맞게 범위도 줄어들어야한다. 소스 설명은 주석을 참고해주세요. import java.util.*; public class Main { public static int R; public static int C; public static char [][] map; public static char [][] tempMap; public static final int[] dx = {0, 0, 1, -1}; public static final int[] dy = {1, -1, 0, 0}; public static void ma..
- 알고리즘 분류 : 문자열, 스택 - 사용 언어 : JAVA - 문제 요점 닫힌 괄호는 가장 마지막에 들어온 열린 괄호와 확인하기 때문에 스택을 이용하였다. 문제에서는 소괄호만 주어져있지만, 필자는 자체적으로 대괄호와 중괄호도 있다고 가정하고 구현하였다. 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { // 해당 문자열 정합성 검사 public static String isClear(String str) { Stack s = new Stack(); for(int j=0; j
- 알고리즘 분류 : DFS - 사용 언어 : JAVA - 문제 요점 N과 M(1) 문제에서 같은 수도 중복될 수 있다. 라는 부분이 추가된 문제. 수를 선택할 때 처음부터 탐색하면 쉽게 풀이 가능 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static int N, M; // 출력을 한번에 하기 위해 사용 public static StringBuilder sb = new StringBuilder(); // 조합 계산 public static ..
- 알고리즘 분류 : DFS, 백트래킹 - 사용 언어 : JAVA DFS와 백트래킹을 이용하여 조합을 구하는 문제입니다. 이전 게시글(N과 M(1))과 다른 부분은 호출한 함수에서 수를 선택할 때 현재 숫자에서 +1부터 시작한다는 부분입니다. 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static int N, M; public static boolean[] visited; // 조합 계산 public static void calcCombi(i..
- 알고리즘 분류 : DFS, 백트래킹 - 사용 언어 : JAVA DFS와 백트래킹을 이용하여 순열을 구하는 문제입니다. 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static int N, M; public static boolean[] visited; public static void calcPerm(int count, int[] arr) { // 뽑은 갯수가 M이랑 같으면 // 출력후 함수 종료 if(count >= M) { for(int..
- 알고리즘 분류 : 구현 - 사용 언어 : JAVA - 문제 요점 10진수로 받은 데이터를 k진법으로 변환할 수 있어야 한다. 소수를 판별할 줄 알아야한다. (모르시는 분들은 https://ajdahrdl.tistory.com/147 참고해주세요) k진법으로 변환하다보니 숫자의 길이가 길어질 수 있다. → Long으로 선언 소스 설명은 주석을 참고해주세요. public class Main { // 긴 숫자가 들어올 수 있으니 long으로 선언 public static boolean isPrime(long num) { // 1은 소수가 아님. if(num == 1) { return false; } // num까지 안보고 제곱근까지만 봐도 됨. for(int i=2; i 0) { changeNum = (n..