- 알고리즘 분류 : 문자열, 스택 - 사용 언어 : JAVA - 문제 요점 - 괄호의 특성과 같은 스택 사용(FILO) 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); /..
알고리즘공부
- 알고리즘 분류 : dp - 사용 언어 : JAVA 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[][] dp = new int[N+1][2];// 각 kg당 필요한 봉투의 갯수. (0: 3kg 봉투의 ..
- 알고리즘 분류 : 다익스트라 - 사용 언어 : JAVA - 문제 요점 - 다익스트라 알고리즘을 알고 있다면 수월하게 해결 할 수 있는 문제. - 다익스트라 설명 및 예제 : https://ajdahrdl.tistory.com/120 소스 설명은 주석을 참고해주세요. 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 { static int N, M..
- 알고리즘 분류 : DFS / BFS - 사용 언어 : JAVA - 문제 요점 - 일반적인 DFS로 풀었다가 시간 초과로 고생한 문제... - 아래의 블로그를 참고해서 해결 (https://velog.io/@yanghl98/백준-1325-효율적인-해킹-JAVA) 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; // Link : https://www.acmicpc.net/problem/1325 // 참고 : https://velog.io/@yan..
- 알고리즘 분류 : 문자열 - 사용 언어 : JAVA - 문제 요점 - 스택을 이용해서 커서 기준 좌우를 설정하면 된다. - A스택은 커서 왼쪽의 알파벳을 넣고, B스택은 커서 오른쪽의 알파벳을 넣는 방식 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; // Link : https://www.acmicpc.net/problem/5397 public class Main { public static StringBuilder sb = new StringBuilder(); public static void main(S..
- 알고리즘 분류 : 그리디 - 사용 언어 : JAVA 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; // Link : https://www.acmicpc.net/problem/1541 public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); // 1. 뺄셈은 가장 마지막에 진행해야하므로,..
- 알고리즘 분류 : 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 - 문제 요점 열쇠를 회전시켜 자물쇠의 빈 홈에 열쇠의 튀어나온 부분을 딱 맞춰 들어가면 true 아니면 false반환 아래의 표처럼 기존 자물쇠를 기준으로 열쇠의 길이만큼 상하좌우를 넓혀준다. 그리고, 열쇠를 움직이며 맞는지 확인하고 다 안맞는다면 열쇠를 회전 후 다시 확인 1 1 1 1 1 0 1 0 1 소스 설명은 주석을 참고해주세요. public class Main { // 2차원 배열 90도 회전 public static int[][] rotate(int[][] arr) { int n = arr.length; int m = arr[0].length; int[][] rotated = new int[m][n]; for (int i = 0; i <..