해결책 1. Add Frameworks Support - > maven 선택 해결책 2. maven 환경으로 인식하는것 같지만 라이브러리는 찾지 못함. .idas 설정 파일로 들어간다. libraries 파일이 존재하는지 체크한다. 위와 같은 파일들 목록이 필요함. 기존에 Intellij + maven 설정환경이 있었는지 확인해서 파일을 붙여넣기한다. 프로젝트의 .iml 파일에 라이브러리 관련 설정이 잘 되어있는 지 체크한다. 문제 상황 2. Dependencies 설정이 죄다 빨간 불 들어와서 인식도 안되는 경우. POM.xml 파일의 repository를 다지웠다가 다시 다른 걸로 설정해서 다시 올릴 것.
완전탐색 상대적으로 구현이 간단하고, 해가 존재한다면 항상 찾게 된다. 완전 탐색으로 푼다면 기본적으로 시간 복잡도가 O(2^N)이나, O(N!) 이므로 INPUT의 값이 작아야한다. DFS / BFS 와 조합해서 풀이가 되는 문제가 꽤 있음. 방식은 대개 EX) { a, b, c, d } 중 2개를 뽑아서 일렬로 세운다면, ab ac ad ba bc bd ca cb cd da db dc 이처럼 다 찾거나, 반복문을 필요한 개수 만큼 돌리게 된다. for (int i=0; i < size; i++ ) { for (int j=0; j < size; j++) { for (int k=0; k < size; j++) { ...... } } } https://programmers.co.kr/learn/course..
선형 검색의 시간 복잡도는 O[N] 이다 라고 설명하는게 좋다. 공통적으로 모든 사람이 이해 하고 내용이 명확하게 어느정도인지 공유되고 알 수 있음 O[N] 으로 쓰는 게 Big O 표기법이다. 상수 알고리즘 O(1) 라고 표기한다. 인풋의 크기가 얼마나 되는 지는 상관이 없다. 위와 같은 알고리즘이 상수 알고리즘 항상 이렇게 구현 할 수 있을리가 없다. 에 속한다. 보기도 쉽고 알기도 쉽다. 다음은 O(N) 로 표기한다. 맨처음에 나타난 그래프가 O(N)이다 대각선 그래프다. Quadratic Time ( 2차 시간 ) 2차 시간은 Nested Loops (중첩반복) 이 있을 때 발생한다. 배열의 각 아이템에 대해 루프를 반복해서 실행한다. 따라서 시간복잡도는 인풋의 N^2 에 해당한다. 로그 시간(L..
https://www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int money = sc.nextInt(); money = 1000 - money; int answer = 0; int coins = 0; int[] mon..
시작은 테스트 케이스는 통과하는 데, 반례가 뭔지 모르겠다 하지만, 정답을 푼 사람들의 답은 아주 간결했다. Arrays.sort(vv1, new Comparator() { @Override public int compare(T o1, T o2) { return 0; } }); 이 부분이 포인트. Arrays.sort 는 기본적으로 오름차순이지만, 아니라면 오버라이드를 통해 정렬 기준을 정해준다. 시간초과가 뜬 실패한 코드와 달리, 장황하게 for문을 안돌려도 된다. 내부적으로 Arrays.sort 가 처리하고 있겠지라고 생각해서 들어가 봤다. 왜 이거 쓰는지 궁금한 사람이 또 있었다. OKKY | 자바의 Arrays.sort는 왜 Dual-Pivot Quicksort를 사용하나요? 정렬공부를 하다 자바..
순차 및 병렬 Aggregate 작업을 지원하는 일련의 요소입니다. 다음 예에서는 Stream 및 IntStream을 사용한 집계 작업을 보여 줍니다. ✍ 자료가 있는 배열이나 컬렉션 또는 특정 범위 안에있는 일련의 숫자를 처리하는 기능이 미리 구현되어있음. ✍ 스트림을 생성하고, 중간 연산 조건을 지정하고, 최종 연산 처리. ✍ 그렇다고 해서, 기존 자료를 변경하거나, 생성된 스트림을 재사용 할 수는 없다. filter - 조건을 넣고 그 조건에 맞는 참인 경우 추출, 문자열 배열이 있을 때 문자열의 길이가 5이상인 경우를 추출한다면 다음과 같다. List sList = new ArrayList(); sList.stream().filter(s -> s.length() >= 5).forEach(s -> ..
✍ 금요일 오후 에러 발생했음. ☁ Tomcat로그를 보니 응답은 성공으로 주지만 소요 시간이 최소 10초 이상이 걸리고있는 상황이었다. ☁ 이전에는 잘 동작하더니 갑자기 느려지는 상황.. ☁ 특히 오래걸리는 API를 살펴봤고 LOG를 기록하는 테이블에 접근하기만 해도 속도가 현저히 떨어지는 현상이 있었다. ☁ DB와 관련된 문제임을 확인하고 바로 DB 상태를 체크. ☁ 전에도 이런 현상이 있던 적이 있어서, ☁ 1. 인덱스를 설정한 값이 잘못되었는지 체크. ☁ 2. API에서 쓰는 쿼리가 지나치게 속도를 많이 잡아먹는 지 체크. ✍ 위 두가지 상황은 아니었고, 2021년도 자료를 백업하고 테이블을 정리하려 했다. ✍ 자주 수정이 일어나는 데이터가 많은 테이블이면서, 또 INSERT를 많이 처리하는 테이..
✍ 막무가내로 알고리즘 문제를 풀다가 깨달았다. ✍ 내가 스택 이라는 자료구조를 많이 써보지 않았다는 것. 그래서 정리하고 넘어가려고 한다. ✍ 왜 정리하고 알고리즘 문제를 풀려고 하는가? ✍ 여러 자료구조와 알고리즘은 관련성이 크다. ✍ 문제를 풀고싶다? --> 고민한다 --> 무슨 방법으로 풀까 ? --> 이런 컬렉션을 쓰면 좋겠다! ✍ 를 생각하게된다. ✍ 하지만 그냥 구현 할 때 습관적으로 ArrayList를 쓰거나 대충 HashMap을 쓰거나.. ✍ 아닌 경우 TreeMap을 쓰거나 밖에 없다.. 부끄럽다.... 오늘은 크게 나누고 좀 더 세세한 정리를 기록하는 게 낫다고 본다. 크게 보자. 선형 - 비선형이 있다. 선형 : 리스트(llist) / 큐(queue) / 덱(deque) 비선형 : ..