전체 글
-
[Java] 빌더 패턴Java 2022. 4. 9. 00:01
빌더 패턴이란? 빌더 패턴은 인스턴스를 생성할 때 생성자(Constructor)만을 통해서 생성하는데 어려움이 있어서 고안된 패턴입니다. 클래스에 생성자 인자가 많다면 어떠한 인자가 어떠한 값을 나타내는지 알기 어렵기 때문입니다. 예제를 통해서 자세하게 알아보겠습니다. 다음은 User 클래스입니다. public class User { private int userIdx; // 선택 private String name; // 필수 private String part; // 필수 private int age; // 선택 private String email; // 선택 } 만약 User 클래스에서 필수적으로 받아야 하는 정보, 선택적으로 받아야 하는 정보가 있다고 가정해 보겠습니다. 빌더 패턴을 사용하지 않..
-
7465. 창용 마을 무리의 개수 - 자바(JAVA)알고리즘/SW Expert Academy 2022. 4. 9. 00:01
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWngfZVa9XwDFAQU SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 해석 마을에는 N명의 사람이 살고 있다. 사람들은 1번부터 N번까지 번호가 부여되어 있습니다 두 사람은 서로 알고 있는 관계일 수 있고, 아닐 수 있습니다. 두 사람이 서로 아는 사람이거나 몇 사람을 거쳐서 알 수 있는 관계라면 이러한 사람들을 모두 묶어 하나의 무리라고 합니다. 창용 마을에 몇 개의 무리가 존재하는지 계산하는 프로그램을 작성하세요. 문제 풀이 전 설계 입력을 통해 인접 행렬을..
-
[Java] 프록시 패턴이란?Java 2022. 4. 8. 02:50
프록시 패턴이란? 디자인 패턴 중 하나로, 어떤 클래스를 직접 사용하는 대신에 프록시 클래스를 통해 사용하는 것을 의미합니다. 사장님에게 바로 보고하지 않고 비서에게 보고하면 비서가 사장님에게 보고하는 것을 떠올리면 좋습니다. 프록시(Proxy)란? 프록시란 프록시 서버, 프록시 객체, 프록시 패턴 등등 소프트웨어 기술에서 종종 등장하는 용어입니다. '대리', '중개'라는 의미를 가진 단어로써 예를 들어 프록시 서버라고 한다면 클라이언트와 서버 사이에 들어가 있어서 '클라이언트 -> 프록시 서버 -> 서버'처럼 중간에 대리인/중개인처럼 사용됩니다. 따라서 프록시 패턴이란 인터페이스를 사용하고 실행시킬 클래스에 대해 객체가 들어갈 자리에 프록시(대리자) 객체를 투입하여 클라이언트는 실제 실행시킬 클래스에 ..
-
스프링 부트 - 회원 관리 예제 실습 (자바 코드로 직접 스프링 빈 등록하기)Spring Framework 2022. 4. 8. 00:01
이전 시간에는 컴포넌트 스캔을 통해 스프링 빈을 등록했습니다. @Service , @Repository, @Autowired 어노테이션을 활용하면 편리한데 왜 직접 스프링 빈으로 등록할까요? 실무에서는 주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트 스캔을 사용합니다. 하지만 정형화되지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록합니다. MemoryMemberRepository를 변경할 계획이므로 우리는 설정을 통해 스프링빈으로 등록하고 사용하면 기존의 코드를 건드리지 않고 변경할 수 있습니다. #컨트롤러를 제외한 회원 서비스와 회원 리포지토리의 @Service, @Repository, @Autowired 어노테이션을 제거하고 진행합니다. 1. he..
-
[Java] 리플렉션이란?Java 2022. 4. 7. 19:34
공부를 하다가 Reflection이라는 키워드를 듣고 해당 키워드에 대해서 전혀 모르겠어서 알아보고자 합니다. Reflection API란? 구체적인 클래스 타입을 알지 못해도 그 클래스의 정보(메서드, 타입, 변수 등등)에 접근할 수 있게 해주는 자바 API입니다. Reflection을 잘 나타낸 문장이지만 처음 공부하는 사람은 무슨 말인지 한 번에 이해하기 쉽지 않습니다. 아래와 같이 Car 클래스가 존재합니다. public class Car { private final String name; private int position; public Car(String name, int position) { this.name = name; this.position = position; } public vo..
-
데이터 베이스 정규화란?CS/데이터베이스 2022. 4. 7. 13:55
정규화(Normalization)란? 정규화의 기본 목표는 테이블 간에 중복된 데이터를 허용하지 않는 것입니다. 중복된 데이터를 허용하지 않음으로써 무결성을 유지할 수 있으며 DB의 저장 용량 역시 줄일 수 있습니다. 무결성이란? 데이터의 정확성, 일관성이 유지되는 것을 의미합니다. 정확성 : 중복이나 누락이 없는 상태 일관성 : 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태 위의 내용은 정규화를 해야 하는 이유와 일치합니다. 정규화를 하기 위해서 테이블을 분해하는 과정이 존재하는데 여기서 테이블이 어떻게 분해되는지에 따라 정규화 단계가 달라지는데, 각각의 정규화 단계에 대해 자세히 알아보도록 하겠습니다. 여기서는 가장 많이 사용되는 4단계를 살펴볼텐데 정규화는 6단계까지도 존재합니다. 제1..
-
[백준] 1759번 : 암호 만들기 - 자바(JAVA)알고리즘/백준 2022. 4. 7. 00:01
https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 문제 해석 암호로 동작하는 보안시스템을 만드려고 한다. 암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한개의 모음(a,e,i,o,u)와 최소 두 개의 자음으로 주성되어 있습니다. 암호는 알파벳이 증가하는 순서로 배열됩니다. 위의 규칙을 따르는 암호를 모두 출력하세요 문제 풀이 전 설계 1. R개의 알파벳을 조합을 이용하여 L개를 뽑는다. 2. 모음이 1개이상 자음이 2개이상인 조합들만 Str..
-
1238. [S/W 문제해결 기본] 10일차 - Contact알고리즘/SW Expert Academy 2022. 4. 6. 00:01
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15B1cKAKwCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 해석 비상연락망과 연락을 시작하는 당번에 대한 정보가 주어질 때, 가장 나중에 연락을 받게 되는 사람 중 번호가 가장 큰 사람을 구하는 함수를 작성하시오. 문제 풀이 전 설계 가장 나중에 연락을 받게 되는 사람들을 구해야 하므로 BFS를 사용합니다. 인접 리스트와 인접 행렬 중에 배열의 크기가 100x100이 최대이므로 인접 행렬을 선택합니다. BFS마다 depth를 적용하여 depth가 커지..