코딩테스트
-
프로그래머스 숫자의 표현(자바)코딩테스트 2023. 6. 7. 14:51
문제 설명 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다. 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요. 제한사항 n은 10,000 이하의 자연수 입니다. 처음에는 for문을 이중으로 돌리면 시간초과가 날 줄 알았는데 생각해보니 n^2이 1억이고 break를 이용해 중간에 for문을 빠져나오게 하면 시간초과가 안 났다. class Solution { publ..
-
백준 14719번 빗물(자바) - 스택코딩테스트 2023. 5. 29. 16:48
문제 2차원 세계에 블록이 쌓여있다. 비가 오면 블록 사이에 빗물이 고인다. 비는 충분히 많이 온다. 고이는 빗물의 총량은 얼마일까? 입력 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치부터 차례대로 W개 주어진다. 따라서 블록 내부의 빈 공간이 생길 수 없다. 또 2차원 세계의 바닥은 항상 막혀있다고 가정하여도 좋다. 출력 2차원 세계에서는 한 칸의 용량은 1이다. 고이는 빗물의 총량을 출력하여라. 빗물이 전혀 고이지 않을 경우 0을 출력하여라. 예제 입력 1 복사 4 4 3 0 1 4 예제 출력 1 복사 5 예제 입력 2 복사 4 8 3..
-
기타 문제풀이(합분해 문제 업그레이드)코딩테스트 2023. 5. 14. 17:44
숫자 k개를 더해서 n이 되는 경우의 수 구하기(k개는 모두 1이상이어야 하고 중복 불가능) import java.util.Scanner; class Program { static int count = 0; static boolean[] visited; public static void combinationSum(int depth, int target, int idx, int sum, int n, int k) { if (depth == k) { // 합이 n과 같으면 경우의 수 1 증가 if (sum == target) count++; return; } for (int i = idx; i
-
문제풀이코딩테스트 2023. 5. 14. 17:42
n*m인 배열 map에서 위치 3개를 뽑는다. 그 후 map 값이 1인 위치와 뽑은 위치 3개의 거리 차이의 합 중 가장 작은 값 구하기(위치 3개는 중복 가능) import java.util.*; // don't change 'Program' class name and without 'public' accessor. class Program { static boolean[][] visited; static int[][] loc; static int[][] map; static ArrayList emp = new ArrayList(); static int answer = Integer.MAX_VALUE; public static void main(String[] args) { Scanner scanner..
-
백준 17298번 오큰수(자바) - 스택코딩테스트 2023. 5. 12. 19:19
풀이 방법 1. arr[i]의 값이 arr[i-1] 보다 큰 경우가 나올 때까지 i를 stack에 push 한다. -> 만약 arr[i] 값이 arr[i-1] 보다 작다면 arr[i]의 값이 스택에 있는 모든 인덱스에 저장되어 있는 수보다 작다는 의미이다. 2. arr[i] > arr[i-1] 인 경우 arr[i]보다 큰 수가 나올 때까지 stack에서 인덱스를 하나씩 pop한다. 이 경우 오큰수를 발견한 것이므로 arr[stack.pop()] = arr[i] 해준다. arr[i] 보다 큰 수가 나왔다면 더이상 pop하지 않고 i를 push 해준다. 3. 인덱스 맨 끝까지 탐색을 마쳤다면 스택에 있는 값을 하나씩 pop 해주며 해당 인덱스에 -1 값을 넣어준다. (이 경우 자신보다 큰 오큰수를 발견하지 ..
-
프로그래머스 택배 배달과 수거(자바) - 카카오코딩테스트 2023. 4. 13. 00:41
문제 설명 당신은 일렬로 나열된 n개의 집에 택배를 배달하려 합니다. 배달할 물건은 모두 크기가 같은 재활용 택배 상자에 담아 배달하며, 배달을 다니면서 빈 재활용 택배 상자들을 수거하려 합니다. 배달할 택배들은 모두 재활용 택배 상자에 담겨서 물류창고에 보관되어 있고, i번째 집은 물류창고에서 거리 i만큼 떨어져 있습니다. 또한 i번째 집은 j번째 집과 거리 j - i만큼 떨어져 있습니다. (1 ≤ i ≤ j ≤ n) 트럭에는 재활용 택배 상자를 최대 cap개 실을 수 있습니다. 트럭은 배달할 재활용 택배 상자들을 실어 물류창고에서 출발해 각 집에 배달하면서, 빈 재활용 택배 상자들을 수거해 물류창고에 내립니다. 각 집마다 배달할 재활용 택배 상자의 개수와 수거할 빈 재활용 택배 상자의 개수를 알고 있..
-
SQL 프로그래머스 LV2코딩테스트 2023. 4. 7. 01:10
1. GROUP BY, HAVING -> HAVING은 집계함수에 대해 조건문을 쓰고 싶을 때 사용(WHERE에는 집계함수 사용 불가) SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1),1) AS AVERAGE_DURATION FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY GROUP BY CAR_ID HAVING AVERAGE_DURATION >= 7 ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC 2. CAR_RENTAL_COMPANY_CAR 테이블에서 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력하는 SQL문을 작성해주세요. ..
-
sql 알고리즘(기본)코딩테스트 2023. 4. 7. 00:55
1. 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요(상위 1개) -> limit 사용 SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1 2. 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성해주세요. 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 결과는 창고 ID를 기준으로 오름차순 정렬해주세요. SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN,'N') AS FREEZER_YN FROM FOOD_WAREHOUSE WHERE ADDRESS like '경기도%' ORDER BY WAREHOUSE_ID ASC ..