Java(160)
-
[Baekjoon] 1026번: 보물 - Java
https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 문제 설명 S = A[0] x B[0] + ... + A[N-1] * B[N-1] 이라는 함수의 결과가 최솟값이 나오도록 하면 해결된다. 풀이 방법 A의 수만 재배열하라고는 했지만 우리는 최솟값만 구하면 된다. 즉 A는 작은 순으로 정렬하고 B는 큰 순으로 정렬한 후에 S 함수에 두 배열을 넘겨주면 된다. 그런데 A와 B를 입력받고 int 배열로 변환하고 다시 정렬하는 과정을 거쳐하 할까?..
2022.05.09 -
[JPA] 코틀린으로 엔티티 작성 시 고려할 점
최근 코틀린에 빠져서 코틀린으로 기존의 자바 작업들을 바꿔서 해보는 중이다. 그러다 코틀린에서 JPA를 쓰려고 하니 여러 가지 고려할 점이 생겨나 글을 작성하게 되었다. 먼저 JPA의 구현체인 Hibernate의 유저 가이드를 살펴보자. https://docs.oracle.com/javaee/5/tutorial/doc/bnbqa.html Entities - The Java EE 5 Tutorial Entities An entity is a lightweight persistence domain object. Typically an entity represents a table in a relational database, and each entity instance corresponds to a row ..
2022.02.08 -
[DI Framework] 어노테이션 개발
먼저 프레임워크에서 사용할 어노테이션을 개발해보자. 먼저 목록부터 살펴보자. @Bean @Configuration이 선언된 클래스의 메서드에 적용되며 해당 메서드를 빈으로 등록함을 의미한다. @Component @ComponentScan으로 탐색되며 해당 클래스를 빈으로 등록함을 의미한다. @ComponentScan 이 어노테이션이 선언된 클래스의 디렉터리부터 모든 하위 패키지를 순회하며 @Component를 탐색한다. @Configuration 메서드 방식으로 빈을 등록하기 위해 사용되며, 설정 파일이라는 의미를 담고 있다. @Injectable 이 어노테이션이 선언된 위치에 따라 빈을 주입함을 의미한다. 개발할 어노테이션들에 대해 살펴보았다. 이제 개발해보도록 한다. 어노테이션 개발은 크게 어렵지 않..
2022.01.18 -
[DI Framework] DI 프레임워크 개발
개발 동기 인프런에서 백기선님의 '더 자바: 코드를 조작하는 다양한 마법' 강의를 수강했다. 강의를 통해 어노테이션 프로세서, 바이트 코드 조작, 리플렉션 등에 대해 기본적인 지식을 습득할 수 있었다. 이 중에 리플렉션을 통해 간단하게 필드 주입 DI 프레임워크를 개발해보는 시간이 있었다. 필자는 스프링처럼 생성자 주입, 필드 주입까지 해보고 싶어 이 프로젝트를 시작하게 되었다. 스프링의 DI 방식 개발에 앞서 스프링의 DI 방식을 살펴보도록 하자. 스프링에서는 @Configuration의 @Bean이 선언된 메서드 또는 @Component가 선언된 클래스를 빈으로 등록한다. 필자도 이 방식을 채택하기로 했다. 빈을 저장하기 위한 컨텍스트를 생성한다. 컨텍스트에서 맵으로 빈을 관리한다. @Componen..
2022.01.18 -
[Programmers] 오픈채팅방 - Java
https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 문제 설명 문제의 이해는 어렵지 않지만 간단하게 설명하면 다음과 같다. 방에 접속한 유저들은 uid로 구분되며 각 유저는 닉네임으로 구분된다. 그리고 명령어로는 Enter, Change, Leave가 있으며 Enter라면 입장 메시지가 출력되고 Leave라면 퇴장 메시지가 출력된다. 그리고 Change라면 해당 유저의 닉네임을 변경한다. 문제의 주요 내용은 최종..
2021.12.23 -
[Programmers] 크레인 인형뽑기 게임 - Java
https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 문제 설명 이 문제는 간단한 인형뽑기 게임이다. 크레인으로 인형을 하나씩 뽑고 그 인형을 바구니에 담아놓는다. 그러다 맨 위에 있는 인형과 새로 들어온 인형이 같으면 두 인형은 사라지고 포인트가 2점 쌓인다는 심플한 게임이다. 해결 과정 먼저 바구니부터 생각해보자. 뽑아온 인형이 하나씩 쌓인다... 뭔가 떠오르는 자료구조가 있지 않은가? 바로 스택이다. 스택은 LIFO 구조로 되어있는 자..
2021.12.14