92342. 양궁대회
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/92342제한사항 풀이class Solution { int[] answer = {-1}; int maxDiff = 0; public int[] solution(int n, int[] info) { dfs(n, 0, new int[11], info); return answer; } void dfs(int n, int idx, int[] ryan, int[] apeach) { if(idx == 11) { if(n ..
87946. 피로도
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/87946?language=java제한사항풀이import java.util.*;class Solution { static int answer = -1; public int solution(int k, int[][] dungeons) { int n =dungeons.length; boolean[] visited = new boolean[n]; dfs(dungeons, k, 0, visited, 0); return answer; } void dfs(int[][] dungeons, i..
17. Letter Combinations of a Phone Number
·
Algorithm/LeetCode
문제https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/제한사항풀이 import java.util.*; class Solution { public List letterCombinations(String digits) { Map> map = new HashMap(); if(digits.equals("")) return new ArrayList(); map.computeIfAbsent('2', k-> List.of("a", "b", "c")); map.computeIfAbse..
42898. 등굣길
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/42898?language=java제한사항 풀이class Solution { public int solution(int m, int n, int[][] puddles) { int answer = 0; int[][] dp = new int[m+1][n+1]; int[][] map = new int[m+1][n+1]; for(int i = 0 ; i회고처음에는 단순한 DFS 문제라고 생각했지만, 이 문제는 최단 경로의 길이가 아닌 경우의 수를 구하는 문제이기 때문에 DFS는 시간 복잡도 측면에서 적절하지 않다고 판단했다. 출발지와 목적지가 고정되어 있고, 경로는 항상 오른쪽..
12927. 야근 지수
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/12927제한사항풀이import java.util.*;class Solution { public long solution(int n, int[] works) { long answer = 0; // 최대 힙을 위한 람다 표현식을 사용한 Comparator 정의 PriorityQueue pq = new PriorityQueue((a, b) -> b - a); for (int work : works) { pq.add(work); } for (int i = 0; i 0) { pq..
403. Frog Jump
·
Algorithm/LeetCode
문제https://leetcode.com/problems/frog-jump/description/제한 사항풀이class Solution { public boolean canCross(int[] stones) { Map map = new HashMap(); int n = stones.length; // 빠른 조회를 위해 HashMap에 돌 위치 저장 for(int i = 0 ; i회고DP 문제이면서도 제한 조건의 범위가 크지 않아서 O(n^2)을 허용하는 문제였다. DP 배열을 정의하는 것이 쉽지 않았다. 그리고 최대 점프 길이 반드시 알아야 하는 문제였다. k는 1부터 시작해서 k-1, k, k+1 중 하나의 길이만큼 점프를 한다. 점프한 만큼의 ..
42884. 단속 카메라
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/42884?language=java제한 사항풀이import java.util.*;class Solution { public int solution(int[][] routes) { int answer = 0; Arrays.sort(routes, (r1, r2) -> r1[1] - r2[1]); int camara = -30001; for(int i = 0 ; i 회고막상 구현은 간단한데 아이디어가 쉽게 떠오르지 않은 문제였다. 존재하지 않는 위치에 임의로 카메라를 두고(..
178870. 연속된 부분 수열의 합
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/178870제한사항풀이class Solution { public int[] solution(int[] sequence, int k) { int[] answer = new int[2]; int n = sequence.length; answer[0] = 0; answer[1] = n-1; int left =0; int sum = 0; for(int right = 0; right k && left 회고부분 수열 합이 k가 되는 수열 중 길이가 짧은 부분 수열의 양 끝..
43105. 정수 삼각형
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/43105제한사항풀이class Solution { public int solution(int[][] triangle) { int answer = 0; int n = triangle.length; int[][] df = new int[n][n]; for(int row = 0 ; row 회고비교적 쉬운 문제였다. 각 단계에서 최대의 이익을 위해 선택을 해야하는 문제였다. 그리디 알고리즘과 다이나믹 프로그래밍이 떠올랐다.이진 트리 탐색을 하면서 리프 노드까지 합을 계산한다. 2가지 경우의 수를 고려했다. 양 끝에 노드가 있는 경우와 아..
176962. 과제 진행하기
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/176962제한사항풀이import java.util.*;class Solution { class Task { private String name; private Integer startTime; private Integer playTime; public Task(String name, Integer startTime, Integer playTime) { this.name = name; this.startTime = startTime; this.playTime = play..