📜 문제 내용 🤔 과정0번 방부터 i 번 방까지 모든 방을 방문하는 데 걸리는 최소 날짜를 저장한 dp 배열을 생성.이때, 최소 날짜가 굉장히 커질 수 있으므로 overflow 문제를 방지하기 위해서 문제에서 주어진 10의 9승 + 7 을 MOD 변수에 넣고 계산 수행. int 형의 범위를 초과할 수 있으므로 long 자료형을 이용한다. i 번 방을 방문하는 데 걸리는 날을 계산하기 위해서는 이전 방인 i - 1 번 방까지의 방문 최소 날짜인 dp[i - 1] 값과, nextVisit[i - 1] 번 방으로 돌아가야 하는 날이 필요하다. dp[i - 1] 값은 이미 알고 있는 값으로 0 번 방부터 i - 1 번 방까지 모든 방을 방문하는 데 걸리는 최소 날짜이다. 초기 상태 : 우리는 i - 1 번 ..
📜 문제 내용 🤔 과정시작점은 반드시 obstacleGrid[0][0] 이며 도착점은 반드시 최우측 하단이다. Unique Paths 와 다르게 장애물을 고려해서 dp 배열을 구성한다. ✨ 최초 제출 답안 - 🙆♂️ 통과`class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int m = obstacleGrid.length; // 행 크기 int n = obstacleGrid[0].length; // 열 크기 // dp 배열 초기화 int[] dp = new int[n]; dp[0] = 1; // 시작점 초기화 ..
📜 문제 내용 🤔 과정장애물도 없고, 도착 지점에 대한 모든 경우의 수를 찾는 문제이다. ✨ 최초 제출 답안 - 🙆♂️ 통과class Solution { public int uniquePaths(int m, int n) { int[][] wayCnt = new int[m][n]; Arrays.fill(wayCnt[0],1); for(int i = 1; i 🔗 문제 링크LeetCode - Unique Paths (링크)
📜 문제 내용 🤔 과정피로도를 담은 2차원 배열을 생성하고, 광물에 따른 피로도를 계산한다. 계산된 피로도를 내림차순으로 정렬하고 가지고 있는 곡괭이를 가지고 최솟값을 도출. ✨ 최초 제출 답안 - 🙆♂️ 통과import java.util.*;class Solution { // 피로도 표 static int[][] fatigueTable = {{1, 1, 1}, {5, 1, 1}, {25, 5, 1}}; public int solution(int[] picks, String[] minerals) { int answer = 0; List fatigueList = new ArrayList(); // 곡괭이의 총 개수 계산 ..
📜 문제 내용 🤔 과정남아있는 적의 수를 저장하고자 최대힙으로 구현한 PriorityQueue를 이용.기본적으로는 최소힙이지만, 최대힙으로 구현하기 위해 PriorityQueue의 비교자를 (a, b) -> b - a 로 설정.그러면 힙은 큰 값이 먼저 나오게 구성된다. ✨ 최초 제출 답안 - 🙆♂️ 통과import java.util.*;class Solution { public int solution(int n, int k, int[] enemy) { // 최대 힙을 구현하기 위해 음수를 저장하는 우선순위 큐 사용 PriorityQueue pq = new PriorityQueue((a, b) -> b - a); int totalSum = ..