본문 바로가기

알고리즘 & 자료구조/프로그래머스132

가장 큰 정사각형 찾기 package programmers; public class 가장_큰_정사각형_찾기 { //위, 왼쪽대각, 왼쪽의 최솟값 + 1 private static int[] dy = {-1, -1, 0}; private static int[] dx = {0, -1, -1}; public static int solution(int[][] board) { go(board); int ans = find(board); return ans * ans; } private static int find(int[][] board) { int ans = -1; for (int[] nums : board) { for (int j = 0; j < board[0].length; j++) { ans = Math.max(ans, nums.. 2023. 3. 13.
전력망을 둘로 나누기 package programmers; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; public class 전력망을_둘로_나누기 { //n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결 //이 전선들 중 하나를 끊어서 전력망 네트워크를 2개로 분할 //두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 //2 2023. 3. 12.
택배상자 package programmers; import java.util.Stack; public class 택배상자 { public static int solution(int[] order) { int answer = 0; Stack s = new Stack(); int idx = 0; for (int i = 1; i 2023. 3. 10.
줄 서는 방법 package programmers; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class 줄_서는_방법 { public static int[] solution(int n, long k) { List list = new ArrayList(); int[] answer = new int[n]; long fn = 1; for (int i = 1; i 0) { //숫자를 고정시킨다고 가정하고 나오는 경우의 수 fn /= n; //들어갈 숫자 결정 answer[idx++] = list.get((int)(k / fn)); list.remove((int)(k / fn)); k %= fn; n--; } return.. 2023. 3. 8.
배달 package programmers; import java.util.Comparator; import java.util.PriorityQueue; public class 배달 { public static int solution(int N, int[][] road, int K) { int[] map = dijkstra(N, road, 1); int ans = 0; for (int x : map) { if (x o.distance)); q.add(new Pair(start, 0)); while (!q.isEmpty()) { Pair p = q.poll(); int distance = p.distance; int currentTown = p.town; if (distance > map[currentTown]).. 2023. 3. 7.
덧칠하기 package programmers; public class 덧칠하기 { //구역 1...n개 //롤러의 길이 m 미터, //롤러는 구역의 일부분만 포함되게 칠하지 않음 //한 구역에 여러번 페인트를 칠해도 되지만, 칠할 곳은 반드시 칠해야댐 //페인트질 하는 횟수의 최소 횟수 public static int solution(int n, int m, int[] section) { int paint = section[0] - 1; int ans = 0; for (int i : section) { if (paint < i) { paint = i + m - 1; ans++; } } return ans; } public static void main(String[] args) { System.out.printl.. 2023. 3. 6.