유형 문제명 문제링크 구현 상호의 배틀필드 순열과 조합 N과 M (1) https://www.acmicpc.net/problem/15649 N과 M (2) https://www.acmicpc.net/problem/15650 일곱 난쟁이 https://www.acmicpc.net/problem/2309 블랙잭 https://www.acmicpc.net/problem/2798 최적 경로 swexpertacademy 그리디 ATM https://www.acmicpc.net/problem/11399 회의실 배정 https://www.acmicpc.net/problem/1931 DFS / BFS DFS와 BFS https://www.acmicpc.net/problem/1260 미로탐색 https://www.acm..
// 알고리즘 1. dp 2. 배낭문제 3. dp배열 생성 - dp[N+1][maxCost] - n값과 가장 높은비용의 배열 생성 4. 현재의 비용에서 가장 높은 메모리 저장 5. 문제에서 요구한 값보다 크거나 같은 비용이 나오면 정답 더보기 import java.util.*; import java.io.*; public class 앱_7579 { static int N, M, arr[], cost[]; static class Point { int m, c; public Point(int m, int c) { this.m = m; this.c = c; } } public static void main(String[] args) throws Exception { BufferedReader br = new ..
// 알고리즘 1. dfs 2. '+' 를 하는경우와 '-' 를 하는경우 둘다 깊이 우선 탐색 3. target값고 결과 값이 같으면 ans++ 더보기 import java.util.*; class Solution { static int N,tar,ans; public int solution(int[] numbers, int target) { int answer = 0; N = numbers.length; tar = target; cal(0,0,numbers); return ans; } public void cal(int idx,int cnt,int[] numbers){ if(idx == N){ if(cnt == tar) ans+=1; return; } cal(idx+1,cnt + numbers[idx]..
// 알고리즘 1. 최소 스패닝 트리 2. x,y,z좌표를 각각 listX,list,Y,listZ에 넣고 오름차순 정렬 3. 인접한 행성들끼리 연결시켜야 함. - 좌표를 담은 리스트들을 돌면서 인접한 행성을 list에 넣어줌 - 크루스칼 알고리즘으로 MST 구함. 더보기 import java.util.*; import java.io.*; public class 행성터널_2887 { static int N, parent[]; static class Point { int x, y, z, idx, from, to, cnt; public Point(int from, int to, int cnt) { super(); this.from = from; this.to = to; this.cnt = cnt; } publ..
// 알고리즘 1. 최단경로 ( 플로이드, 다익스트라 ) 2. 플로이드 알고리즘으로 각 노드마다 최단거리를 구함 3. 주어진 노드에서 각각노드까지의 최소합을 구해서 출력 더보기 import java.util.*; import java.io.*; public class 비밀모임_13424 { static int T, N, M, K, arr[], dis[][], ans; static final int inf = 1000001; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); T = Integer.parseInt(br.rea..
// 알고리즘 1. 다익스트라 2. 간선 리스트를 만들 때, 주어진방향과(list) 역순방향(RList) 둘다 저장 3. 다익스트라 알고리즘으로 최단 경로를 구함. 4. 마지막 도착 노드부터 Rlist를 이용하여 역순으로 가면서 최단 경로로 갈 수 있는 모든 연결선을 지움. (cal함수) - 재귀를 이용하여 제거 - 해당 노드를 기준으로 최단경로값(dist)으로 갈 수 있는 모든 경로를 다 지워야 함. 5. 다익스트라 알고리즘으로 거의 최단경로를 구함. 더보기 package baekjoon; import java.util.*; import java.io.*; public class 거의최단경로_5719 { static int N, M, S, D, dist[], pList[]; static Priority..
// 알고리즘 1. 그리디 알고리즘 2. 가장 큰 수부터 나머지함수를 이용하여 제거 하는 방식으로 구함. 더보기 import java.util.*; import java.io.*; public class 동전0_11047 { static int N, K; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); N = Integer.parseInt(st.nextToken()); K = Integer.parseInt(st..
// 알고리즘 1. 다익스트라 2. 시작점 ( 1번 노드) 에서 각각의 노드로 갈 수 있는 최소의 거리를 구하면 됨. 3. dist배열을 이용하여 최소거리를 구하는데 최소값인 노드를 pList에 각각 저장 4. pList가 Integer.MAX_VALUE가 아닌 값이 정답이 됨. 더보기 import java.util.*; import java.io.*; public class 네트워크복구_2211 { static int N, M; static boolean[] v; static class Point { int to, cnt; public Point(int to, int cnt) { this.to = to; this.cnt = cnt; } } public static void main(String[] ar..
// 알고리즘 1. 자료구조 2. 입력된 수열을 만들기 위하여 arr배열에 저장 3. 스택을 이용하여 입력 데이터 저장 (1 ~ n까지) - for문을 돌며 값( i ) 저장 - index를 1부터 시작하여 들어오는 i값과 같으면 poll 다르면 패스 - poll한다면 index 를 1 증가시키고 스택의 가장 위부분(peek)와 비교해서 같으면 출력 다르면 패스 - 반복 더보기 import java.util.*; import java.io.*; public class 스택수열_1874 { static int n, arr[]; static Stack st; static StringBuilder sb; public static void main(String[] args) throws Exception { B..
// 알고리즘 1. dfs 탐색 2. 건물 층 수 만큼의 방문배열 생성 v 3. 방향 배열생성 dr {U, -D} 4. bfs 탐색 시작. 도착하면 종료 더보기 import java.util.*; import java.io.*; public class Main { static int F, S, G, U, D, ans; static boolean[] v; static int[] dr; static class Point { int start, cnt, state; public Point(int start, int cnt, int state) { this.start = start; this.cnt = cnt; this.state = state; } } public static void main(String[]..