//알고리즘 1. 구현문제 -> 스택으로 구현하는 문제 -> 들어온값이 0이 아닐때 push 0일때 , pop -> 전부다 pop 하면서 더하기 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class 제로_10773 { static int K,ans; public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)..
//알고리즘 1. dp -> dp 테이블을 k+1 크기로 만듦 -> dp 테이블을 아주 큰 수로 초기화 -> k수 마다 동전으로 만들 수 있는지 없는지를 판단함 - k가 동전보다 클 때, dp[ k - 동전 ] 값이 max인지를 판단하여 아니라면 1+ dp[ k - 동전 ] -> 만들 수 있다면 최소값으로 갱신 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class 동전2_2294 { static int n, k, coin[], dp[]; public stati..
//알고리즘 1. 그래프 탐색 -> 주어진 자료로 리스트를 만들어 탐색하여 모든 노드를 거쳐가는 최소값을 구함. 방법 1. 더보기 import java.util.ArrayList; import java.util.Scanner; public class 상근이의여행_9372 { static int T, N, M, cnt, ans; static boolean v[]; static ArrayList[] list; public static void main(String[] args) { Scanner sc = new Scanner(System.in); T = sc.nextInt(); for (int tc = 1; tc
//알고리즘 1. 그래프 탐색 -> 가중치가 없는 무방향 그래프이므로 인접리스트를 만들어 탐색 -> 방문체크를 하며 dfs 탐색 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class 최장경로 { static int T, N, M, max = 1; public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedRea..
//알고리즘 1. dp -> n x k 의 dp 테이블 생성 -> k값 1~k까지 n으로 만들 수 있는 경우의 수를 저장 -> dp[i][j]에 저장되는 값 : num[i]값을 제외하고 만들 수 있는경우(dp[i-1][j]) + num[i] 값으로 만들 수 있는 경우(sum) dp 문제를 많이 안 풀어봐서 코드는 간단하지만 시간은 오래걸림... 더보기 import java.util.Scanner; public class 동전1_2293 { static int n, k, num[], dp[][]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); k = sc.nextInt(); num ..
//알고리즘 1. 완전탐색 -> 시간복잡도 6^10 2. 재귀로 모든 경우의 수를 다 구함 3. 구해진 경우마다 조건과 비교하여 조건에 적합할 시 max값 저장 후 정답 배열 저장. 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class 햄스터 { static int N, X, M, arr[][], ans[], max, ansArr[]; public static void main(String[] args) throws NumberFormatException, IOException { BufferedRead..
//알고리즘 1. 구현 + 아이디어 -> 대각선으로 진행할 수 있는 경우부터 정답에 더함 -> 4방으로 한칸 씩 갈 수 있는 경우를 더함 (도착점 좌표 - 현재 좌표) ※ H,W가 10,000 이고 N 이 1000개 이기 때문에 배열로 한칸씩 전진하면서 풀 수 없음(시간초과) ※ BFS로 풀어봤는데 시간초과 남. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class 최소값으로이동하기 { static int W, H, N, ans; static Point start; static class Point { int ..
//알고리즘 1. 순열 -> 인영이가 낼 수 있는 경우를 모두 구한다음 규영이와 비교 import java.util.Scanner; public class 규영이와인영이의카드게임 { static int T, A[], B[], arr[], win, lose; static boolean[] v; public static void main(String[] args) { Scanner sc = new Scanner(System.in); T = sc.nextInt(); for (int tc = 1; tc b) { win++; } else { lose++; } return; } for (int i = 0; i < 9; i++) { if (v[i]) continue; v[i] = true; arr[idx] = B[i..
//알고리즘 1. 단순 구현 2. 시작점의 x,y 좌표와 도착점의 x,y좌표를 비교하여 차이가 더 큰 쪽부터(x or y)시작. 3. 시작점과 도착점이 같을경우 정답은 0 = 0) { X -= 1; } else { X += 1; } // 비교 if (X == x && Y == y) { break; } ans++; if (Y - y >= 0) { Y -= 1; } else { Y += 1; } if (X == x && Y == y) { break; } } } else { while (true) { ans++; if (Y - y >= 0) { Y -= 1; } else { Y += 1; } if (X == x && Y == y) { break; } ans++; if (X - x >= 0) { X -= 1; ..