Coding Test/JAVA 코딩테스트 풀이정리(프로그래머스) 73

프로그래머스 스쿨(Java - Lv.1) - 대충 만든 자판[복잡한 경우의 순회]

문제https://school.programmers.co.kr/learn/courses/30/lessons/160586  해답class Solution { public int[] solution(String[] targets, String[] keymap) { String[][] eachTargets = new String[targets.length][targets[0].length()]; int[] answer = new int[keymap.length]; for(int i=0;i  해설문제가 상당히 반복의 횟수가 많다. 일단 keymap의 길이가 100이라는것을 착안하여 200을 최소 클릭횟수로 미리 담아두었으며 최솟값을 갱신하는 방식으로 각 ..

프로그래머스 스쿨(Java - Lv.1) - 체육복[그리디 + priorityque]

문제https://school.programmers.co.kr/learn/courses/30/lessons/42862   import java.util.*;import java.util.stream.*;class Solution { public int solution(int n, int[] lost, int[] reserve) { //que에 담아서 사용 int answer = n; PriorityQueue lostQ = new PriorityQueue(); PriorityQueue reserveQ = new PriorityQueue(); Set lostSet = IntStream.of(lost) .boxed() ..

프로그래머스 스쿨(Java - Lv.2) - 디펜스 게임[그리디 + priorityque]

문제 https://school.programmers.co.kr/learn/courses/30/lessons/142085   잘못 접근한 풀이(BFS+DP)import java.util.*;class Solution { Queue que = new LinkedList(); //탐색을 위한 que int round = 0; int[] enemy; Set set = new HashSet(); public int solution(int n, int k, int[] enemy) { que.add(new int[]{n,k}); set.add(round+"_"+n+"_"+k); this.enemy = enemy; while(!que.isE..

프로그래머스 스쿨(Java - Lv.2) - 리코쳇 로봇[BFS]

문제https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  해답import java.util.*;class Solution { String[][] board; boolean[][] visited; Queue que = new LinkedList(); int[] goal; int[] start; int answer = 1; int cnt = 1; public int solution(String[] p_board) { //변수로 받은 strin..

프로그래머스 스쿨(Java - Lv.2) - 완전범죄[DP - 메모아이징]

문제https://school.programmers.co.kr/learn/courses/30/lessons/389480   해답import java.util.*;class Solution { public int solution(int[][] info, int n, int m) { Set dupChk = new HashSet(); Queue que = new LinkedList(); int min = Integer.MAX_VALUE; int index = 0; que.add(new int[]{-1,0,0}); while(!que.isEmpty()){ int[] arr = que.poll(); ..

프로그래머스 스쿨(Java - Lv.2) - 연속 부분 수열 합[윈도우 슬라이드]

문제  https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  해답 import java.util.*;class Solution { public int solution(int[] elements) { Set set = new HashSet(); int[] rounded = new int[elements.length*2]; for(int i=0;i  해설 문제를 보면 일일이 다 덧셈을 해서 처리해야할것같으나 중복제거에서 Set를 떠올리고, 윈도우 슬라이드..

프로그래머스 스쿨(Java - Lv.1) - 택배 상자 꺼내기[2025 프로그래머스 코드챌린지 2차 예선]

문제https://school.programmers.co.kr/learn/courses/30/lessons/389478 해답 class Solution { public int solution(int n, int w, int num) { boolean left = true; int maxC = n/w+(n%w==0?0:1); int c = 0; int r = 0; int numc = 0; int numr = 0; int[][] boxes = new int[maxC][w]; for(int i=1;i  해설 문제를 수학적인 규칙으로 풀어보려했으나, 의도가 직접 배열안에 순차적으로 숫자를 담고 그 숫자가 제..

프로그래머스 스쿨(Java - Lv.1) - 유연근무제[2025 프로그래머스 코드챌린지 1차 예선] [반복문처리]

문제https://school.programmers.co.kr/learn/courses/30/lessons/388351  풀이class Solution { public int solution(int[] schedules, int[][] timelogs, int startday) { int answer = 0; for(int i=0;i0 && (startday+j)%7=60) time +=40; return time; }} 해설 시간을 다루되 정수배열로 주어진것이라 분이 60을 넘어갈경우 60을빼고 100을더하기에 40으로 처리하고, 배열의 반복에 따른 요일처리를 변수없이 처리했다.

프로그래머스 스쿨(Java - Lv.2) - 피로도[경우의수를 따지는 완전탐색]

문제https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이class Solution { boolean[] visited; int cnt = 0; int[][] dungeons; int answer = 0; public int solution(int k, int[][] dungeons) { this.visited = new boolean[8]; this.dungeons = dungeons; for(int i=0;ianswer) a..