1. 의존관계 주입 방법생성자 주입생성자를 통해 의존관계를 주입 받는 방법@Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired // 생성자가 1개이므로 생략해도 자동 주입 가능 public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; ..
https://www.acmicpc.net/problem/17951시험지의 개수와 시험지를 나눌 그룹의 수가 주어질 때, 시험지를 그룹으로 나눠 그룹들 중 총 점수의 최솟값을 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ K ≤ N ≤ 100,0000 ≤ x ≤ 20 그룹으로 나눈 시험 점수의 최솟값을 매개 변수로 놓고 이분탐색 진행하면 100,000 × log (100,000)의 시간 안에 해결할 수 있다. left는 입력받은 시험 점수 중 최솟값으로 두고, ..
https://www.acmicpc.net/problem/2579N개의 계단이 있고 계단마다 일정한 점수가 주어져있다. 시작 지점부터 마지막 계단까지 올랐을 때 얻을 수 있는 점수의 최댓값을 구하는 문제다. 계단을 오르는 규칙은 다음과 같다.계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다.연속된 세 개의 계단을 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다.마지막 도착 계단을 반드시 밟아야 한다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ N ≤ 300계..
https://www.acmicpc.net/problem/3079상근이와 친구들 M명이 입국심사대가 N개 있는 곳에서 심사를 하려고 한다. k번 심사대에서 심사하는 데 걸리는 시간은 T_k다. 한 심사대에서는 한 사람만 심사를 할 수 있고, 초기에 모든 심사대는 비어있다.가장 앞에 서 있는 사람은 비어있는 심사대로 이동할 수 있다. 항상 이동을 해야하는 것은 아니고, 더 빠른 심사대의 심사가 끝나길 기다린 다음 그곳으로 가서 심사를 받아도 된다.이때, 상근이와 친구들이 심사를 받는데 걸리는 시간의 최솟값을 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘..
1. 컴포넌트 스캔과 의존관계 자동 주입 시작하기자바 코드의 @Bean이나 XML의 등을 통해 설정 정보에 직접 등록할 스프링 빈을 나열하는 방식의 문제점등록할 빈의 개수가 많아지면 일일이 등록하기 귀찮고, 설정 정보가 커지며, 누락되는 문제가 발생할 수 있음' 이 문제를 해결하기 위해 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 동록하는 기능(= 컴포넌트 스캔)과 의존관계 자동으로 주입하는 기능(@Autowired 사용)을 제공함@Configuration@ComponentScan(excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class))public class AutoAppConfig { }설정 정보에..
https://www.acmicpc.net/problem/2343블루레이에는 총 N개의 강의가 들어가고, 강의의 순서는 바뀌면 안된다. (i번 강의와 j번 강의를 같은 블루레이에 녹화하려면 i와 j 사이의 모든 강의도 같은 블루레이에 녹화해야 한다.) 크기가 같은 M개의 블루레이에 모든 기타 강의 동영상을 녹화하려고 할 때, 블루레이 크기의 최솟값을 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ N ≤ 100,0001 ≤ M ≤ N 각 강의의 길이는 10,000..
1. 웹 애플리케이션과 싱글톤 패턴스프링이 없는 순수한 DI 컨테이너는 호출(요청)할 때마다 새로운 객체를 생성함이런 방식을 사용하게 되면 요청 수만큼 객체가 생성되고 소멸되므로 메모리 낭비가 심해짐해결 방안 = 싱글톤 패턴: 해당 객체가 딱 1개만 생성되고, 새로운 요청이 들어오면 해당 객체를 공유하도록 설계하기 싱글톤 패턴클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴객체 인스턴스가 2개 이상 생성되지 못하도록 private 생성자를 사용해, 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 함아래는 객체를 미리 생성해 두는 가장 단순하고 안전한 싱글톤 패턴 구현 방식객체가 필요하다면 getInstance() 메서드를 통해 조회 가능 (항상 같은 인스턴스를 반환함)priva..
https://www.acmicpc.net/problem/2512여러 지방의 예산 요청을 심사해 국가의 예산을 분배해야 한다. 이때, 주어진 방법을 사용해 정해진 총액 이하에서 가능한 한 최대의 총 예산을 배정한다.모든 요청이 배정될 수 있는 경우, 요청한 금액을 그대로 배정모든 요청이 배정될 수 없는 경우, 특정한 정수 상한액을 계산해 그 이상인 예산 요청에는 모두 상한액을 배정상한액 이하의 예산 요청에는 요청한 금액을 그대로 배정 여러 지방의 예산 요청과 국가 예산의 총액이 주어질 때, 위의 조건을 모두 만족하도록 예산을 배정하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 ..