예제 풀이 이 문제는 다이나믹 프로그래밍(DP) 기법을 통해 쉽게 풀 수 있다. 예제를 보면, 각 줄마다 i번째 집을 빨강으로 칠했을 때, 초록으로 칠했을 때, 파랑으로 칠했을 때 비용이 입력 값으로 들어온다. 먼저 입력값을 dp[1001][3] 배열에 저장한다. dp[0][0]은 0번째 집을 빨강으로 칠했을 때 비용, dp[0][1]은 0번째 집을 초록으로 칠했을 때 비용, dp[0][2]는 0번째 집을 파랑으로 칠했을 때 비용을 의미한다. 입력이 끝난 다음, 다이나믹 프로그래밍(DP) 기법을 통해 이웃하는 집과 색이 겹치지 않도록 칠했을 때의 최소 비용을 구한다. for문을 돌면서 i번째 집에서 3가지 색깔로 칠했을 때의 최소 비용을 각각 계산해 dp[i][0] ~ dp[i][2]에 다시 저장한다. ..
@Bean(initMethod = "method 명", destroyMethod = "method 명") Config 클래스에서 빈을 등록할 때 초기화 또는 소멸 메소드도 함께 지정할 수 있다. 스프링 뿐만 아니라 외부 라이브러리에서도 적용할 수 있다. destroyMethod를 설정하지 않으면 기본적으로 'close', 'shutdown' 이름의 메소드를 자동으로 호출한다. 소멸 메소드를 사용하고 싶지 않다면 빈 공백으로 남겨두도록 하자! 예시 @Configuration class LifeCycleConfig { @Bean(initMethod = "init", destroy = "close") public NetworkClient networkClient() { NetworkClient networkC..
해당 타입의 모든 빈을 사용하고 싶을 때 의존관계 주입에 쓰일 생성자에 해당 타입의 List 또는 Map을 파라미터로 받는다. 스프링 컨테이너는 타입이 같은 모든 빈 객체들을 찾아 List(Map)에 빈을 주입한다. @Test void findAllBean() { ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); DiscountService discountService = ac.getBean(DiscountService.class); Member member = new Member(1L, "userA", Grade.VIP); // member 유저에게 fixDis..
직접 어노테이션 만들기 @MainDiscountPolicy 어노테이션을 직접 만들어보자. package hello.core.annotataion; import org.springframework.beans.factory.annotation.Qualifier; import java.lang.annotation.*; // @MainDiscountPolicy에 적용하고 싶은 어노테이션을 추가한다. @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Qualifier..
의존관계 주입 방법 생성자 주입 객체가 생성될 때 딱 1번만 호출된다. 실수로 변경될 일이 없고, 의존관계 주입이 누락되는 경우를 미연에 방지할 수 있어 가장 선호되는 방법이다. final 키워드를 사용하면 필드 값이 설정되지 않는 오류를 컴파일 시점에 막을 수 있다. @Component public class OrderService { private final MemberRepository memberRepository; @Autowired public OrderService(MemberRepository memberRepository) { this.memberRepository = memberRepository; } ... } 생성자가 하나만 있으면 @Autowired가 없어도 자동으로 주입된다. 수..
직접 @Bean을 붙여 스프링 빈을 등록하는건 너무너무 귀찮다! 자동으로 빈을 등록하고 의존 관계를 주입하는 방법에 대해 알아보자. package hello.core; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import static org.springframework.context.annotation.ComponentScan.*; @Configuration @ComponentScan( excludeFilters = @Filte..
- Total
- Today
- Yesterday
- baekjoon
- 버추억박스오류
- Linux
- linuxgedit
- cat
- 사용자ID
- whatis
- GithubAPI
- 리눅스cron
- GitHubAPIforJava
- 버추억박스에러
- linuxtouch
- api문서
- 쇼미더코드
- 백준27211
- E_FAIL
- 백준27219
- OnActivityForResult
- virtualbox
- 리눅스
- 백준
- atq
- linux파일
- awk프로그램
- SELECT #SELECTFROM #WHERE #ORDERBY #GROUPBY #HAVING #EXISTS #NOTEXISTS #UNION #MINUS #INTERSECTION #SQL #SQLPLUS
- linuxawk
- 코테
- cron시스템
- Baekjoon27211
- Baekjoon27219
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |