전체 글
[프로그래머스][Level3]셔틀버스 -JAVA
[문제] https://programmers.co.kr/learn/courses/30/lessons/17678 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 ["23:59","23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59"] "18:00" programmers.co.kr [풀이] 어떤 알고리즘을 알아야만 풀수 있는 문제가 아닌 문제에 주어진 상황을 코드로 구현할 수 있는지 보는 문제같다. 1. 큰 틀은 다음과 같이 구현했다. 1) 탑승객들을 빨리 도착한 시간 순서대로 줄 세운다(PriorityQueue 사용) ..
[프로그래머스][Level3][Java] 길 찾기 게임
[문제 설명] programmers.co.kr/learn/courses/30/lessons/42892 코딩테스트 연습 - 길 찾기 게임 [[5,3],[11,5],[13,3],[3,5],[6,1],[1,3],[8,6],[7,2],[2,2]] [[7,4,6,9,1,8,5,2,3],[9,6,5,8,1,4,3,2,7]] programmers.co.kr [풀이 과정] 이진 탐색 트리(Binary Search Tree)의 개념을 확실히 알 고 있는지 보는 문제다. 1. 이진 탐색 트리를 만들 수 있는지. 2. 전위 순회(preOrder)로 이진 탐색트리를 조회 할 수 있는지. 3. 후위 순회(postOrder)로 이진 탐색트리를 조회 할 수 있는지. 풀이 과정은 다음과 같다. 1) 노드 클래스 만들기 이진 탐색 트..
이진 탐색 트리(Binary Search Tree)개념 및 Java 구현
이진 탐색 트리(Binary Search Tree) 다음과 같은 조건을 충족하는 이진 트리를 이진 탐색 트리라고 한다. ① 트리의 각 노드들은 반드시 키 값을 가지고 있다. 키 값은 모두 달라야 한다. ② 노드 N의 왼쪽 서브트리 모든 노드의 키 값은 노드 N의 키 값보다 작아야 한다. ③ 노드 N의 오른쪽 서브트리 모든 노드의 키 값은 노드 N의 키 값보다 커야 한다. 이진 탐색 트리 구현 이진 탐색 트리는 자료 구조 연결리스트를 활용한다. ✅ 준비단계. 노드 클래스 만들기 이진 탐색트리의 개별 노드를 나타내는 클래스이다. 다음과 같이 3개의 필드로 구성된다. ① Data: 실제 데이터가 들어가는 필드 ② Left: 노드의 왼쪽 서브 트리 ③ Right: 노드의 오른쪽 서브 트리 [Java code] ..
[프로그래머스][Level3][JAVA] 야근 지수
[문제 설명] programmers.co.kr/learn/courses/30/lessons/12927 코딩테스트 연습 - 야근 지수 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도 programmers.co.kr [풀이 내용] 야근 피로도(각 작업량 제곱의 합)이 최소가 되려면 가장 큰 수의 작업량부터 처리해야 한다. 완전탐색으로 정답이 될 수 있는 모든 경우의 수를 나열해 보았는데 최소작업량이 더 작은 것보다 최대작업량이 더 작은것이 야근피로도가 더 적었다. 이유는 큰 수와 작은 수가 1차이가 나더라도 제곱의 차이는 확 커지기 때문이다. 따라서 주어진 n..
[프로그래머스][Level3][JAVA] 멀리 뛰기
[문제 설명] programmers.co.kr/learn/courses/30/lessons/12914 코딩테스트 연습 - 멀리 뛰기 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2 programmers.co.kr [풀이 내용] * 사용 알고리즘 : DP 1. brute force알고리즘을 사용해서 중복 순열로 풀면 시간초과가 뜬다. 문제의 규칙을 찾아보니 피보나치 수열과 같았다. 1) 1칸일 때 -> 1가지 - 1칸 2) 2칸일 때 -> 2가지 - 1칸 1칸 - 2칸 3) 3칸일 때 -> 3가지 - 1칸 1칸 1칸..
[프로그래머스][Level3][JAVA] 이중우선순위큐
[문제 설명] programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr [풀이 내용] JAVA의 PriorityQueue 자료구조를 이용하여 해결하는 문제다. 이 때 기억해야할 점은 다음 두가지이다. 1. JAVA의 PriorityQueue는 min heap이 default이다. 2. max heap을 구현하고 싶다면 Collections.reverseOrder() 옵션을 사용한다. 문제에서 최댓값을 삭제하는 경우와 최솟값을 삭제하는 경우가 둘 다 존재한다. min heap과 max heap이 둘 다 존재해야하므로 PriorityQueue 를 2개 생성하였다. 느낀점: Level3라고 하기엔 너무 쉬운문제다...
이분 탐색(Binary Search)
이분 탐색(Binary Search) - 정렬되어 있는 배열에서 데이터를 찾으려 할 때 탐색 범위를 절반으로 줄여가며 데이터를 찾는 방법 - 배열의 중앙값을 조사하여 탐색하고자 하는 값이 왼쪽 혹은 오른쪽에 있는지 알아내어 검색해야할 배열의 크기를 반으로 줄인다. - 순차 탐색에 비해 굉장히 효율적인 알고리즘 ex) 10억명의 이름이 담긴 배열에서 특정 이름을 찾으려면 순차탐색에서는 약 5억번의 비교가 필요하지만 이분탐색으로는 약 30번의 비교만으로 찾을 수 있다. * 이분 탐색을 할 수 있는 데이터의 조건 : 정렬이 된 배열이어야 함. * 이분 탐색에 적합한 데이터 : 삽입, 삭제가 빈번하기보다는 고정된 데이터 이분 탐색 동작 과정 ex1) 배열 [1,3,5,6,7,9,11,20,30]에서 5을 검색 ..
[Junit] java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test 에러
junit5에서 단위테스트 초기 세팅 과정에서 다음과 같은 에러메시지를 뱉었다. java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test @SpringBootApplication 어노테이션이 붙은 클래스가 위치한 패키지의 하위 패키지에 테스트를 둬야 한다는 원칙을 어긴 것이다. 나의 경우에는 멀티모듈 프로젝트였고 테스트코드를 작성하는 모듈은 @SpringBootApplication 어노테이션이 붙은 클래스가 존재하지 않는 단순참조용 모듈이었다. 다음과 같은 구조였다. 문제해결:..
curl과 wget
터미널에서 특정 주소의 파일을 다운로드 받고 싶을 때 mac은 curl, linux는 wget 명령어를 사용한다. 헷갈리지 말고 구분하여 쓰자. [사용 방법] 예시) 다운로드 받으려는 파일: https://repo.spring.io/release/org/springframework/cloud/spring-cloud-dataflow-server/2.7.0/spring-cloud-dataflow-server-2.7.0.jar - mac curl 'https://repo.spring.io/release/org/springframework/cloud/spring-cloud-dataflow-server/2.7.0/spring-cloud-dataflow-server-2.7.0.jar' - linux wget 'ht..