목록분류 전체보기 (276)
HwangHub
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 런타임 에러는 십중팔구 IndexOutOfBoundException 문제이다. 인덱스 에러가 발생할 수 있는 포인트를 확인하여 디버깅해야 한다. package 코드트리.그래프.DFS; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class 안전_지대 { public static int n, m; public static int[] dx ..
도커는 오늘날 전 세계에서 개발자들이 가장 많이 사용하는 오픈소스 2위에 등극될 만큼 많이 활용되는 기술인데요. (1위는 git 입니다.) 이번 포스팅에서는 도커를 이용하여 AWS EC2 환경에 배포를 해보면서, 왜 다들 도커를 사용하는지 느껴보는 시간을 가져보겠습니다! 도커는 깔려있다고 가정합니다. 0. 실습 환경 윈도우 11 jdk 17 springboot intelliJ ultimate docker desktop EC2 : ubuntu 22.04 1. AWS EC2와 소스 코드 세팅하기 우선 배포할 코드와 서버 컴퓨터 역할을 해줄 EC2가 필요할 것입니다. 저의 경우에는 현재 진행하고 있는 프로젝트 코드를 배포하려고 하고 있으며, 서버 컴퓨터는 프리티어 EC2인 t2.micro를 이용할 것입니다. ..
AOP를 통해서 Validation을 구현하던 중, 해당 코드를 원래 Controller에서 작성하고, 검증하고 있었음을 이해하게 되었다. Dto에 해당 조건들을 걸고 난 뒤에는, Controller에서 Validation을 체크하고, 문제가 없을 경우 Service로 내리는 흐름으로 돌게 되어 있다. 상황을 가정해보자. 아래와 같이 Entity가 정의되어 있다. @Entity @Getter @Table(name = "user_tb") @NoArgsConstructor(access = AccessLevel.PROTECTED) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(..
문제 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 알고리즘 주어진 일련의 문자열이나 수열에서 3개를 뽑아서 가짓수를 구하는 경우에, 완탐을 할 경우 시간이 초과할 것 같다면 누적합을 고려해볼 수 있다. 이 때에는 누적합 응용 기술인 LR 테크닉을 적용하는 것이 좋다. 이 문제에서는 n이 10의 5제곱까지이므로 완탐으로는 절대 풀 수 없을 것이다. 따라서 LR 테크닉을 적용하였다. 문제풀이 V1 : 실패 곱셈을 계속 더해주다보면 int 타입의 범위를 넘어서게 되어 오버플로우가 발생할 수 있다. 특히나 문자열의 길이가 10^5이므로 더욱 조심해야 한다..
https://www.codetree.ai/missions/8/problems/top-3-smallest-number?utm_source=clipboard&utm_medium=text 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 알고리즘 간단하게 생각해서 최솟값 3개를 입력 받을때마다 빼고, 이를 곱한걸 출력하는 것이니, 입력 받을때마다 어떻게 최솟값을 뽑아낼지만 고민하면 된다. 중복되는 값이 존재할 수 있는 경우에서 최솟값을 매번 찾는 연산을 수행하려면 O(logN)으로 수행 가능한 우선순위 큐를 사용하면 좋다. V1 : 틀림 처음엔 이게 왜 틀..
https://www.codetree.ai/missions/8/problems/delete-it-from-the-beginning-2?utm_source=clipboard&utm_medium=text 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 알고리즘 N이 최대 100,000이므로 2중 루프는 사용할 수 없으니, 경우의 수를 냅다 다 훑을 수 없으므로 완전탐색은 아니다. 매번 k개의 숫자를 제거하는 연산은 불필요하며, 결국 모든 경우를 돌았을 때의 결론을 얻어내기 위해서는 주어진 숫자를 역순으로 입력받을 수 있으면 되니까 배열을 이용하여 인덱스를..
1. 알고리즘 코드트리 240xp + 코드트리특강 180xp : hashmap, hashset, treemap, treeset 집중학습 2. 프로젝트 - likelionuniv PJT feature/community -> main 으로 PR 요청 (review request to 슬기) 3. CS/개발 공부
point of failure 주어지는 숫자의 범위가 -10억부터 +10억까지인데, 나는 출력하기 위한 값을 저장하는 변수 ans를 int 타입으로 선언하였다. analysis 로직 자체는 어렵지 않은 문제였다. 하지만 컴퓨터는 항상 타입별로 표현할 수 있는 숫자의 크기가 다르단 것을 명심해야 한다. 현재 주어질 수 있는 x, y의 범위가 10억까지인데, int는 약 -20억(-2*10^9)부터 +20억(+2*10^9)까지 표현이 가능하다. 그렇다면 단발적으로 x, y 좌표를 나타낼 순 있지만, 3개의 y 좌표를 더한 값을 나타내려 하는 순간 overflow가 발생한다. 따라서 정답을 담아야 하는 변수는 long으로 나타내야 한다. 그렇게 하면 n이 1000이라 하더라도, 즉 10억인 y가 1000개 있..
Point of failure 처음에 시간복잡도를 고려하지 않고 2차원 loop를 이용하여 완전탐색으로 하려고 했다. public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextToken()); int k = Integer.parseInt(st.nextToken()); Map map = new HashMap(); st = new Str..
스프링 프레임워크는 객체 생성자를 DI를 위해 IoC 컨테이너에 등록해서 사용하는데, 이때 컨테이너에 등록하는 객체나 그 생성자를 Bean이라고 하며, Bean으로 관리한다는 말을 한다. 이렇게 스프링에 필요한 Bean을 '직접' 등록하기 위해서는 @Bean 어노테이션을 사용할 수 있지만, 우리는 보통 @Service, @Repository와 같은 어노테이션을 활용하여 자동으로 IoC 컨테이너에 Bean을 등록한다. 스프링은 '컴포넌트 스캔' 과정을 통해 @Component가 선언된 클래스를 Bean으로 등록한다. 우리에게 익숙한 @Controller, @Service, @Repository, @Configuration 모두 그 상위에 @Component를 가지고 있다. 스프링이 Bean으로 관리하는 것..