알고리즘 & 자료구조/프로그래머스

package programmers; import java.util.Arrays; public class 연속된_부분_수열의_합 { public static int[] solution(int[] sequence, int k) { int[] answer = new int[2]; int[] partSum = init(sequence); int left = 0; int right = 0; int cur = Integer.MAX_VALUE; while (left
package programmers; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class 숫자_블록 { //숫자 0이 적힌 블록들이 설치된 도로에 다른 숫자가 적힌 블록들을 설치 //블록에 적힌 번호가 n 일때, 가장 첫 블록은 n*2 번째 위치에 설치, 그 다음은 n*3, ... 위치에 설치 //기존에 설치된 블록은 빼고 새로운 블록을 집어 넣는다. //블록은 1이 적힌 블록부터 숫자를 1씩 증가시키며 순서대로 설치한다. //1이 적힌 블록은 2,3,4,5 ...인 위치에 우선 설치 //그 후, 2가 적힌 블록은 4,6,8,10,...인 위치에 설치 public static int[] soluti..
package programmers; import java.util.PriorityQueue; public class 디펜스_게임 { //처음에 병사 n명을 가지고 있다. //매 라운드마다 enemy[i] 마리 적 등장 //남은 병사 중 enemy[i] 만큼 소모하며 enemy[i] 마리 적을 막을 수 있음 //남은 병수의 수 보다 현재 라운드의 적의 수가 더 많으면 게임 종료 //무적권을 사용하면, 병사의 소모 없이 한 라운드 공격 막기 가능 //무적권은 최대 k 번 사용 // 1 ≤ n ≤ 1,000,000,000 // 1 ≤ k ≤ 500,000 // 1 ≤ enemy의 길이 ≤ 1,000,000 // 1 ≤ enemy[i] ≤ 1,000,000 public static int solution(in..
package programmers; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class 우박수열_정적분 { //콜라츠 추측 //모든 자연수에 n에 대해 다음 작업을 반복하면 항상 1로 만들 수 있는 추측 //1-1. 입력된 수가 짝수면 2로 나눔 //1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더함 //2. 결과로 나온 수가 1보다 크다면 1번 작업을 반복 public static double[] solution(int k, int[][] ranges) { List graph = new ArrayList(); List area = new ArrayList(); double[] answer = ..
package programmers; import java.util.LinkedList; import java.util.Queue; public class 미로_탈출 { //S : 시작지점 //E : 출구 //L : 레버 //O : 통로 //X : 벽 //S -> L -> E //레버를 당기지 않아도 출구가 있는 칸을 지날 수는 있다. private static int[] dy = {-1, 0, 1, 0}; private static int[] dx = {0, 1, 0, -1}; private static Pair start; private static Pair end; public static int solution(String[] maps) { char[][] map = init(maps); retu..
package programmers; public class 조이스틱 { /* ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 (마지막 위치에서 오른쪽으로 이동하면 첫 번째 문자에 커서) */ public static int solution(String name) { int answer = 0; int len = name.length(); int idx; int move = len - 1; for (int i = 0; i < name.length(); i++) { answer += Math.min(name.charAt(i) - 'A', 'Z' - name.cha..
신재권
'알고리즘 & 자료구조/프로그래머스' 카테고리의 글 목록