코딩 테스트

// 2250년, 인류는 지구 뿐 아니라 여러 행성을 다니며 살고 있다.// 이 행성 간을 빨리 오가기 위해 새롭게 터널을 구축하려 한다.// 행성은 (x, y, z) 좌표로 주어진다.// 행성1: (x1, y1, z1), 행성2: (x2, y2, z2)// 이 때 행성간 터널 연결 비용은 min(|x1-x2|, |y1-y2|, |z1-z2|) 로 계산한다.// n 개의 행성 사이를 n-1 개의 터널로 연결하는데 드는 최소 비용을 구하는 프로그램을 작성하세요.// 입출력 예시// 입력:// data = {{11, -15, -15}, {14, -5, -15}, {-1, -1, -5}, {10, -4, -1}, {19, -4, 19}}// 출력: 4/** * 간선 정보부터 만들어야하는 문제임 * * -> ..
// 숫자 7193 은 7193 도 소수이고,// 719, 71, 7 도 각각 소수이다.// n 이 주어졌을 때, n 자리 수 중에 위와 같은 소수를 찾는 프로그램을 작성하세요.// 입출력 예시// 입력 n: 3// 출력: 233, 239, 293, 311, 313, 317, 373, 379, 593, 599, 719, 733, 739, 797public class Main { public static ArrayList result; public static ArrayList solution(int n) { result = new ArrayList(); int[] primes = {2, 3, 5, 7}; // 1의 자리 소수 for (int i = 0; i
정수형 배열 nums 와 정수 m 이 주어졌다. nums 에는 양의 정수 값들이 들어 있고, m 은 배열을 부분 배열로 분리할 수 있는 수이다. nums 배열을 m 개의 부분 배열로 분리할 때, 각 부분 배열의 합중 가장 큰 값이 최소가 되도록 분리했을 때의 합을 출력하세요. 입출력 예시 nums: 7, 2, 5, 10, 8 m: 2 출력: 18 nums: 1, 2, 3, 4, 5 m: 2 출력: 9 public class Main { public static int solution(int[] nums, int m) { int left = 0; int right = 0; for (int n : nums) { left = Math.max(n, ..
정수형 배열 weights 와 정수 days 가 주어졌다. weights 에는 각 상품의 무게들의 정보가 들어있고, days 는 운송 납기일이다. 상품들은 weights 에 적혀있는 순서대로 실어서 운송해야 하는데, days 이내에 운송을 하기 위한 차량의 운송일 당 최대 적재량 중에서 최소가 되는 경우의 적재량을 계산하는 프로그램을 작성하세요. 입출력 예시 weights: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 days: 5 출력: 15 weights: 3, 2, 2, 4, 1, 4 days: 3 출력: 6 /** * 주어진 배열의 값 자체가 아닌, 문제가 요구하는 **도메인에 해당하는 값의 범위**로 이진탐색하는 문제 !! */public class Main { public sta..
2차원 행렬에서 이진 탐색으로 데이터 찾기row x col 행렬 데이터가 주어졌을 때, target 을 이진 탐색으로 찾는 프로그램을 작성하세요.각 행의 데이터는 오름차순으로 정렬 상태입출력 예시행렬: {{1, 3, 7, 8}, {10, 11, 15, 20}, {21, 30, 35, 60}}target: 3출력: truetarget: 13출력: false public class Main { public static boolean solution(int[][] matrix, int target) { int rows = matrix.length; int cols = matrix[0].length; int result = binarySearch(matrix, targ..
원형 정렬 상태 배열에서의 이진 탐색nums 배열에 원형 상태로 데이터가 정렬되어 있을 때, 이진 탐색으로 데이터를 찾는 프로그램을 작성하세요.O(log n) 유지배열을 재 정렬하지 않고 풀기입출력 예시arr: 4, 5, 6, 7, 8, 0, 1, 2target: 0출력: 5arr: 8, 0, 1, 2, 4, 5, 6, 7,target: 3출력: -1public class Main { public static int solution(int[] arr, int target) { return binarySearch(arr, target, 0, arr.length - 1); } public static int binarySearch(int[] arr, int target, int..
target 값이 arr 내에 있으면 해당 인덱스 반환없으면 해당 값이 있을 경우의 위치에 -1을 곱하고 1을 뺀 값을 반환입출력 예시입력 arr: 1, 2, 5, 10, 20, 30, 40, 50, 60target: 30출력: 5target: 3출력: -3public class Practice { public static int binarySearch(int[] arr, int target, int left, int right) { if (left > right) { //항상 left가 대상인 이유 -> 재귀 끝나는 순간 -> right, left가 되고 사이에 값이 들어가야하므로 left자리가 대상값의 위치가 된다! return (left * ..
정수 배열 nums 가 주어졌을 때 오름차순으로 정렬하기 위해 배열 내에서 정렬이 필요한 구간의 길이를 출력하는 프로그램을 작성하세요. 입출력 예시 입력: 2, 6, 4, 8, 5, 3, 9, 10 출력: 5 입력: 1, 3, 1 출력: 2 내 풀이public class Main { public static int solution(int[] nums) { int startIdx = 0; int endIdx = 0; // max 보다 크면서 이후로 작은 값이 없는 것이 endIdx.. -> 해설과 차이나는 부분! startIdx = getStartIdx(nums); if(startIdx == -1){ return 0; } endIdx = getEndIdx(nums, startIdx); return endI..
// 주어진 그래프를 두 개의 그래프로 분리할 수 있는지 확인 하는 프로그램을 작성하세요. // 분리 조건: 인접하지 않은 노드끼리 분리할 수 있다.. // 모든 노드는 연결되어 있다. // 분리 가능하면 true, 불가능하면 false 출력 // 예시 입력) // 그래프: {{1, 3}, {0, 2}, {1, 3}, {0, 2}} // 출력: true // 그래프: {{1, 2, 3}, {0, 2}, {0, 1, 3}, {0, 2}} // 출력: false public class Practice3 { public static void solution(int[][] graph) { // 인접노드에 대해서 -flag 값 처리 -> 인접노드인데, flag값이 동일하다면 분리가 되지 않는 것 // int[][..
# 공부 포인트 1. 배열의 첫 인덱스를 1부터 세면 계산하기 편하게 n + 1로 생성하기 2. ArrayList 편하게 생성하기 -> Arrays.asList(1, 2); 3. 뱀이 자신을 밟는지 보기 위해서 Queue의 contains()로 확인 4. 방향 전환 테크닉 -> 시계방향으로 ArrayList에 넣은 후 % len 테크닉으로 확인 public class Practice5_ans { public static void main(String[] args) { // Test code int n = 6; int k = 3; int l = 3; ArrayList apples = new ArrayList(); apples.add(new ArrayList(Arrays.asList(3, 4))); app..
꾸준함의 미더덕
'코딩 테스트' 카테고리의 글 목록