Algorithm/프로그래머스 14

[프로그래머스] 도둑질 (자바) / DP

문제 설명 입력&출력 문제풀이 class Solution { public int solution(int[] money) { int answer = 0; //0부터 시작 맨 마지막 제외 int[] dp0 = new int[money.length-1]; //1부터 시작 맨 마지막 포함 int[] dp1 = new int[money.length]; dp0[0] = money[0]; dp0[1] = money[0]; dp1[0] = 0; dp1[1] = money[1]; for(int i = 2 ; i < money.length-1;i++ ){ dp0[i] = Math.max(dp0[i-2]+money[i],dp0[i-1]); } for(int i = 2; i < money.length;i++){ dp1[i] ..

[프로그래머스] 타겟 넘버(자바) / DFS

문제 제한사항 문제풀이 class Solution { static int answer; public void dfs(int[] numbers,int target,int idx,int sum){ if(idx == numbers.length){ if(sum == target) answer++; return; } sum+=numbers[idx]; dfs(numbers,target,idx+1,sum); sum-=numbers[idx]*2; dfs(numbers,target,idx+1,sum); } public int solution(int[] numbers, int target) { answer = 0; dfs(numbers,target,0,0); return answer; } } ※ 내 생각 이 문제는 DFS..

[프로그래머스] 다단계 칫솔 판매(자바) / 자료구조 & 구현

문제 제한사항 입출력 문제풀이 import java.util.*; class Solution { class report{ int money; String ref; public report(int money,String ref){ this.money = money; this.ref = ref; } } public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) { int[] answer = new int[enroll.length]; HashMap hm = new HashMap(); for(int i = 0 ; i < enroll.length;i++){ hm.put(enroll[i],new report(0,re..

[프로그래머스] 행렬 테두리 회전하기 ( 자바) / 구현

문제 제한 사항 입출력 문제풀이 import java.util.*; class Solution { public int[] solution(int rows, int columns, int[][] queries) { int[] answer = new int [queries.length]; int[][] arr = new int[rows][columns]; int tmp =1; for(int i = 0 ; i < rows;i++){ for(int j = 0 ; j < columns;j++){ arr[i][j]=tmp; tmp++; } } int x1=0,x2=0,y1=0,y2=0; for(int t = 0 ; t < queries.length;t++){ x1 = queries[t][0]-1; y1 = quer..

[프로그래머스] 이중 우선 순위 큐(자바) / 힙

문제 제한 사항 및 입출력 문제풀이 import java.util.*; class Solution { public int[] solution(String[] operations) { int[] answer = new int[2]; PriorityQueue pq1 = new PriorityQueue(); PriorityQueue pq2 = new PriorityQueue(Collections.reverseOrder()); String[] tmp; for(int i = 0 ; i < operations.length;i++){ tmp = operations[i].split(" "); if(pq1.size()==0 && tmp[0].equals("D"))continue; if(tmp[0].equals("I"))..

[프로그래머스] 디스크 컨트롤러(자바) /Heap

문제 설명 제한사항 입력&출력 문제풀이 import java.util.*; class Solution { static class job { int request; int time; public job(int request, int time) { this.request = request; this.time = time; } } public int solution(int[][] jobs) { int answer = 0; LinkedList works = new LinkedList(); PriorityQueue pq = new PriorityQueue(new Comparator() { @Override public int compare(job i, job j) { return i.time - j.time; }..