목록전체 글 (181)
Lewis's Tech Keep
- 적어도 java.util && java.lang 에 있는 것 만큼은 많이 읽어 볼 것. TODO - 읽으면서 번역 시도 (*02-16~)
- 기본 힙 이용해서 풀어나가는 문제 - 힙 구조에 문제에 나온 설명 그대로 따라가면 끝. 더보기 import java.util.*; class Solution { public int solution(int[] scoville, int K) { int answer = 0; PriorityQueue minHeap = new PriorityQueue(); for(int sNum: scoville) { minHeap.add(sNum); } while( minHeap.size() > 1 && K > minHeap.peek()) { Integer leastHotNum = minHeap.poll(); Integer secondHotNum = minHeap.poll(); Integer newHot = leastHot..
- 맞는 풀이 - 답 보고 품 - dp 시 이전 단계 -> 이후 단계 생각도 좋지만 - 이후 단계 -> 이전 단계 저장 값을 어떻게 들고 올 지 생각하는 것도 생각해 봐야 함. 더보기 class Solution { public int solution(int[][] triangle) { int answer = 0; for(int i=1; i
- 실패한 시도 - 전 단계의 값들을 저장해 나가면서 하려고 했는데 - 이는 전 단계에 값들이 얼마나 다음 단계로 퍼져나갈 지 예상이 어려우므로 내가 하는 방식이 아니라 다른 방식으로 해야한다. - 실패한 코드에서 배워나가자 - dp && 최대값 문제 : 점화식 전 단계의 값을 어떻게 저장할 지 고민해야 함 - 최대값이라면 모든 경우의 수가 아니라 전 단계에는 전 단계의 최대값만 필요 더보기 class Solution { public int solution(int[][] triangle) { int answer = 0; // idx = 0 -> 7 // [7] // ------- // idx = 0 -> 3 + 7 // idx = 1 -> 8 + 7 // [10, 15] // ------- // idx ..
- 스택 기본 활용한다면 가볍게 넘길 수 있는 문제 더보기 import java.util.*; class Solution { boolean solution(String s) { boolean answer = true; Stack stack = new Stack(); for(int i=0; i 0 ? false : answer; } }
- DP 는 아직 할 때마다 감이 잘 안 온다 - 기본 아이디어 - TOP-BOTTOM && BOTTOM-TOP 방식을 기억을 잘 할 것 (이전 단계의 값을 저장해서 내려가거나 올라간다) - 한번에 다 하는 것이 아니라 쪼갠다 (recursive 한 부분인 것을 잘 기억) - 조건을 잘 찾을 수 있게 생각해야 한다. - 풀이는 답을 보고 했던 부분이지만 설명 - 미리 1~8단계까지 SET 형태의 자료구조로 준비 - i-> 1-> 8 까지 돌면서 N 횟수가 커지는 것을 표현 - j -> 1단계일 경우 N -> N -> 2단계일 경우 NN -> NN -> N (+N, -N, *N, /N) -> 3단계일 경우 NNN -> NNN -> NN (+N, -N, *N, /N), -> N +N (+N, -N, *N, ..
- formula 만들어서 하는 방식 : 실행시간 효율적, 공간 적게 차지 - 그러나 이해하기 힘든 단점 + 로직적으로 문제와 잘 안 물리는 부분이 있음 (문제는 거리 -> path로 변경하기 때문) - 나중에 생각해보면 boolean으로 하려면 4차원 배열이 오히려 가장 직관적일 수도 있음 - 객체 지향으로 풀었을 때는 아래의 답이 깔끔하게 나오는 것 중 하나라고 생각함 더보기 import java.util.*; class Solution { class Point { int x; int y; public Point(int x, int y) { this.x = x; this.y = y; } public int getX() { return this.x; } public int getY() { return ..
- 간선 맵 생성 (edgeMap) - 각 간선 맵에 맞는 index를 좌표를 기반으로 하여 대입 (1:1 mapping 가능하게 함) - 각 간선 체크 - 완료 피드백 - 좋지 않은 이유 : 공식 세우는 데만 6시간 이상 걸려버렸다.. 이럴 만한 이유까지는 없었는데.. - 클래스로 생성 후 비교 시 좀 더 깔끔하게 마무리 가능하다. 더보기 import java.util.*; class Solution { public int solution(String dirs) { int answer = 0; int lineCount = 11; // 11 * 11 line int cellCount = lineCount - 1; // 11줄 -> 10칸 int totalLineCount = lineCount * cell..