Algorithm/Programmers

Algorithm/Programmers

[Lv.3] 아이템 줍기 -자바

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 ..

Algorithm/Programmers

[Lv.3] 최고의 집합

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

Algorithm/Programmers

[Lv.3] 야근 지수

import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; class Solution { public long solution(int n, int[] works) { long answer = 0; PriorityQueue pq=new PriorityQueue(new Comparator() { @Override public int compare(Integer o1, Integer o2) { return o2-o1; } }); for (int work : works) { pq.add(work); } while(true){ if(n==0){ for (Integer integer : pq) { answer+=int..

Algorithm/Programmers

[Lv.3] 코딩 테스트 공부

오랜만에 또 알고리즘 문제를 풀려니 머리가 초기화 된 것 같았다.. 우선 문제는 알고력과 사고력을 길러 주어진 모든 문제를 푸는데 드는 최소 비용을 구하는 문제였다. 고를 수 있는 선택지는 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..

Algorithm/Programmers

[Lv.3] 부대복귀

import java.util.*; class Solution { public int[] solution(int n, int[][] roads, int[] sources, int destination) { int[] answer = new int[sources.length]; //만약 시간초과만 나면 플루이드 와샬로 Map roadMap=new HashMap(); for(int i=1;io1.cost-o2.cost); pq.add(new Node(destination,0)); boolean[] visited=new boolean[n+1]; //dest 부터 i까지의 최소 거리 int[] distance=new int[n+1]; for(int i=1;i

Algorithm/Programmers

[Lv.3] 연속 펄스 부분 수열의 합

50/100 (메모리 초과) class Solution { public long solution(int[] sequence) { int size= sequence.length; long[][][] dp=new long[size+1][size+1][2]; //i~i까지 dp //0: -1, 1:1 start long answer=Integer.MIN_VALUE; for(int i=0;i3칸 5칸 -> dp[j][j+i][0]=Math.max(dp[j][j+i-1][0]+dp[j+i][j+i][0],dp[j][j][0]+dp[j+1][j+i][1]); dp[j][j+i][1]=Math.max(dp[j][j+i-1][1]+dp[j+i][j+i][1],dp[j][j][1]+dp[j+1][j+i][0]); } a..

Algorithm/Programmers

[Lv.3] 등산 코스 정하기 -자바

실패 코드 (시간초과, 메모리 초과) import java.util.HashSet; import java.util.Set; class Solution { public int[] solution(int n, int[][] paths, int[] gates, int[] summits) { int[] answer = new int[2]; int[][] memo=new int[n+1][n+1]; //해당 경로까지의 intensity for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { memo[i+1][j+1]=(i==j)? 0:Integer.MAX_VALUE; } } for (int[] path : paths) { memo[path[0]][path[1]]=..

Algorithm/Programmers

[Lv.3] 미로 탈출 명령어 - JAVA

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..

시롱시롱
'Algorithm/Programmers' 카테고리의 글 목록 (4 Page)