stack클래스의 예외 옵션 때문에 어거지로 만든 쓰파게티코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50import java.util.*; class Solution { public String solution(String number, int k) { ArrayList arr = new ArrayList(); int index = 1; arr.add(number.charAt(0)); Character prev=arr.get(arr.size()-1); while(k>0 && index0){ prev..
알고리즘 풀이
우선순위 큐에 대한 개념이 필요한 문제 Integer에 대해서 오름차순으로 자동정렬되는 것만 알면 쉬움 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21import java.util.*; class Solution { public int solution(int[] scoville, int K) { PriorityQueue pq = new PriorityQueue(); int answer = 0; for(int i: scoville) pq.add(i); while(true){ if(pq.peek()>=K) break; if(pq.size()==1) return -1; else { pq.add(pq.poll() + (pq.poll())*2); answer++; ..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24import java.util.*; class Solution { public int solution(String arrangement) { String reArr = arrangement.replace("()","0"); Stack st = new Stack(); int answer = 0; for(int i=0; i
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47import java.util.*; public class Paper{ int num; int importance; public Paper ( int num, int importance ){ this.num = num; this.importance = importance; } } class Solution { public int solution(int[] priorities, int location) { LinkedList pp = new LinkedList(); int n..
트럭 클래스 선언 다리가 버틸 수 있는 남아있는 무게, 시간을 저장할 변수 선언 아직 다리를 지나지 못한 트럭 리스트 = outList 다리를 지나고 있는 트럭 리스트 = inList outList에 순서대로 트럭들을 저장해주고 outList와 inList가 모두 비어있을 때까지 반복문을 돌려줌 inList의 첫번째 성분(가장 먼저 다리에 들어간 트럭)의 distance가 0일 경우 가용무게를 그만큼 더해주고 요소를 제거해줌 그 다음 트럭이 들어올 수 있는지 체크한 후 가능하면 트럭을 들여보냄 time을 1초 더해줬기 때문에 전체트럭의 남은 거리를 discounting해줌 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28..
1일씩 지날 때마다 속도량(speeds)만큼 작업의 양(progresses)를 늘려줌 index는 0부터 시작하고 작업량이 100이상인지 하루가 지날때마다 체크해줌 현재 index가 100이상일 경우 배포시작임 배포시작부터 index를 늘려주면서 미완료될때까지 complete와 index를 늘려줌 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { List ans = new ArrayList(); int index=0; in..
3진법을 조금 응용한 문제인데 나머지가 0이 되게 떨어지는 구간만 따로 처리해주면 된다 나머지가 0일때 몫을 하나 떨궈주고 나머지를 4로 교체시켜줌 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19class Solution { public String solution(int n) { String answer = ""; int rest=0; while(n>0){ rest = n%3; n /= 3; if(rest == 0) { rest = 4; n-=1; } answer = rest + answer; } return answer; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17class Solution { public static int[] solution(int[] heights) { int N = heights.length; int[] answer = new int[N]; for(int i = N-1; i >= 1; i--) { for(int j = i-1; j >= 0; j--) { if(heights[i]
선행 스킬을 찍기전에 나오면 안되는 스킬이 나온다면 flag를 활용해 false처리해줌 for문을 돌고난 후에도 flag값이 여전히 참일 경우 문제에서 요구하는 스킬트리 조건을 달성하므로 answer를 counting해줌 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27class Solution { public int solution(String skill, String[] skill_trees) { int answer = 0; for(int i=0; i
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19class Solution { public int[] solution(int[] prices) { int len = prices.length; int[] answer = new int[len]; for(int i = 0; i