목록Java/알고리즘 (120)
Lewis's Tech Keep
- 실패 코드 - dfs 로 시도 - dfs 로 시도할 경우 재귀가 너무 오래 돌아서 돌다가 timeover 더보기 class Solution { private int min; private int n; private int m; class Cell { private int x; private int y; public Cell(int x, int y) { this.x = x; this.y = y; } private int getX() { return this.x; } private int getY() { return this.y; } private boolean isCompleted() { return this.x == n-1 && this.y == m-1; } private void move(int x..
- dfs/bfs - 탈출 조건만 잘 잡는다고 생각하면 되었다. 더보기 import java.util.*; class Solution { private int min; private void dfs(String cWord, int stage, String target, String[] words, boolean[] indexArr) { if(cWord.equals(target)) { if(min > stage) { min = stage; } return; } List nWords = getOneDiffWords(cWord, words, indexArr); if(nWords.size() == 0) { return; } for(String nWord: nWords ) { int idx = Arrays.asL..
- dfs - 노드들은 모두 1의 값을 가지고 있음 - 1 ~ n 까지 노드 중 [1][1], [2][2], [3][3] 중심으로 해당 노드들을 중심으로 dfs 재귀 - 엣지들을 확인하며 엣지들 값이 존재하면 ex( (1, 2) ) - 2를 중심으로 다시 재귀 확인 -> ( 2 -> or 3 ) - dfs 재귀를 돌면서 [1][1] 확인 끝나면 +1 다음은 [2][2] 로 검사 - 그러나 [2][2] 가 이미 존재했다면 [1][2] 엣지를 통해 들어갔던 dfs 재귀로 인해 이미 체크 완료 - 답 완성 더보기 class Solution { static Boolean dfs(int[][] computers,int n) { if(computers[n][n] == 0) { return false; } compu..
- 적어도 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 ..