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..
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..
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..
160585. 혼자하는 틱택토
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/160585제한 사항풀이class Solution { public int solution(String[] board) { int answer = -1; int oCnt = 0; int xCnt = 0; for(int i = 0 ; i oCnt || oCnt-xCnt >1) return 0; // O가 이기는 수 boolean isOWin = checkWin(board, 'O'); // X가 이기는 수 boolean isXWin = checkWin..
17687. [3차] n진수 게임
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/17687제한 사항풀이class Solution { public String solution(int n, int t, int m, int p) { StringBuilder answer = new StringBuilder(); StringBuilder convert = new StringBuilder(); for(int i = 0 ; i회고m명의 참가인원이 돌아가면서 자신의 숫자를 말하는 게임이 주어진다.(369게임 처럼...)자신의 차례에 말한 숫자를 미리 파악해야한다.자신이 말해야할 횟수(t) * 참여인원(m) 만큼의 숫자 내..