import java.util.LinkedList; import java.util.Queue; class Solution { public int solution(int[][] rectangle, int characterX, int characterY, int itemX, int itemY) { int answer = 0; boolean[][] board=new boolean[52][52]; int startX1,startX2,startY1,startY2; int[][] dp=new int[52][52]; for (int i = 0; i < 52; i++) { for (int j = 0; j < 52; j++) { dp[i][j]=100000; } } //1. 하나의 직사각형 변 위에 있다. // 1-1 ..
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; class Solution { public int[] solution(int n, int s) { int div=s/n; if(div
오랜만에 또 알고리즘 문제를 풀려니 머리가 초기화 된 것 같았다.. 우선 문제는 알고력과 사고력을 길러 주어진 모든 문제를 푸는데 드는 최소 비용을 구하는 문제였다. 고를 수 있는 선택지는 1. 1의 비용으로 알고력or코딩력을 1 늘린다. 2. 풀수있는문제를 풀어 cost만큼의 비용을 지불하고 alp_rwd와 cop_rwd를 얻는다. 처음 시도했던 풀이(코드x) 처음 접근을 alp를 기준으로 가장 효율적인 문제리스트 , cop을 기준으로 가장 효율적인 문제리스트, 전체적(alp+cop)으로 가장 효율적인 리스트 이렇게 3개의 리스트를 Comparator를 이용해서 정렬하고 1.alp가 최대치를 넘긴경우 2.cop가 최대치를 넘긴경우 3.그렇지 않은 경우 이렇게 3개의 케이스로 나누고 1.의 경우 다시 c..
class Solution { static int endX,endY; public String solution(int n, int m, int x, int y, int r, int c, int k) { String answer = ""; //d -> l -> r -> u int height=Math.abs(r-x); int width=Math.abs(c-y); int sum=height+width; if(sum%2==1&&k%2!=1) return "impossible"; if(sum%2==0&&k%2!=0) return "impossible"; if(sum>k) return "impossible"; //빠른순으로 이동을 시도하고 되면 해당 경로로만 가는거 약간 그리디 느낌으로 해야될 듯 int left..