본문 바로가기

알고리즘 문제풀이

(51)
[알고리즘] 백준15686 - 치킨배달 java package a0223; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; /* 남겨질 가게의 개수 = M -> 조합으로 완탐 조합 정해질때마다 bfs돌리기 */ public class 백준_치킨배달 { static ArrayList home; static ArrayList chicken ; static int remain; static int size; static int[][] arr; static int minnum = Integer.MAX_VALUE; static int result[]; static int tmp[][]; static int[]..
[알고리즘] 백준16236 - 아기상어 java package a0223; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class 백준_아기상어16236 { static ArrayList fish; static int starti; static int startj; static int[] di = {-1, 0, 1, 0}; static int[] dj = {0, 1, 0, -1}; static int[][] visit; static int size; static int[][] arr ; static int nowsize = 2; static int noweatcnt = 0; stati..
[알고리즘] 백준2636 - 치즈 java package a0301; import java.util.*; import java.io.*; /* 치즈 겉부분은 녹는다 -> 겉부분을 어떻게 구분? 내부에 구멍이 없으면 사방탐색 바로적용가능한데 내부구멍과 구분을 해야함 가장자리에는 치즈가 놓이지않음 -> (0,0)에서부터 dfs or bfs 돌려서 -1로 표현 -> 계속 0으로 남아있는 부분은 내부 치즈임 ->-1과 맞닿아있는 1은 모두 -1로 변경 */ public class 치즈2636 { static int[][] arr; static int sero ; static int garo ; static int cheezecnt() {//현재 남아있는 치즈개수 구하는 함수 int cnt = 0; for(int i=0; i
[알고리즘] 백준1018 - 체스판 다시칠하기 java package a0301; import java.util.*; import java.io.*; /* 처음 떠오르는 풀이 -> 그냥 완탐? n,m이 최대값 = 50이니까 최대연산 -> 64 * 42 * 42번 근데 언제 최소가 되지? -> 8*8크기의 첫원소가 W일때랑 B일때로 나눠야할듯? */ public class 체스판다시칠하기 { static char[][] arr; static int mincnt = Integer.MAX_VALUE; public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer ST..
[알고리즘] 백준2589 - 보물섬 java package a0301; import java.util.*; import java.io.*; /* 최대값의 최소값 -> 최소라는 표현은 의미가 없음 그냥 bfs처리하면됨 즉, 육지상의 어느지점간의 거리가 최대인지 찾는게 중요 -> L표시된곳에서 모두 bfs 돌려봐야할듯 */ public class 보물섬2589 { static int sero; static int garo; static char[][] arr; static int[][] visit; static int maxlen = 0; static boolean check(int i, int j) { if(0
[알고리즘] 백준1331 - 나이트투어 java package a0301; /* map이용하면될듯? 좌표로 바꿀필요없이 map 이용해서 구현 */ import java.util.*; import java.io.*; public class 나이트투어1331 { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Map m = new HashMap(); m.put('A', new ArrayList()); m.put('B', new ArrayList()); m.put('C', new ArrayList()); m.put('D', new ArrayList()); m.put('E',..
[알고리즘] 백준1026 - 보물 java package a0228; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; /* 문제 조건을 제대로 보지 않고 (N=50개까지) 처음에 완전탐색 돌려서 시간초과로 틀렸다. 음의 양수만 배열에 들어오니 그리디로 풀어야한다. 한 배열의 가장 큰 수는 다른 배열의 가장 작은수와 계속 곱했을때 제일 작은 결과값을 갖는다. */ public class 보물1026_두번째풀이 { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); i..
[알고리즘] 백준2669 - 합집합 면적 java package a0213; import java.util.*; public class B2669 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[][] arr = new int[100][100]; int[] rec1 = new int[4]; int[] rec2 = new int[4]; int[] rec3 = new int[4]; int[] rec4 = new int[4]; for(int i=0; i