전체 글(137)
-
[Spring5입문] AOP 프로그래밍 기초
1. 프록시와 AOP - RecCalculator 클래스 : Calculator 인터페이스를 상속하고 팩토리얼 메소드를 재귀 방법으로 오버라이딩 한 클래스 - ImpeCalculator 클래스 : Calculator 인터페이스를 상속하고 팩토리얼 메소드를 for 문을 통해 오버라이딩 한 클래스 => 이 두 클래스의 수정 없이, 코드 중복도 없이, 팩토리얼 메소드의 실행 시간을 구하려면? public class ExeTimeCalculator implements Calculator{ private Calculator delegate; public ExeTimeCalculator(Calculator delegate){ this.delegate = delegate; } @Override public long ..
2021.08.09 -
[Spring5입문] 빈 라이프사이클과 범위
1. 컨테이너 초기화와 종료 - 스프링 컨테이너는 초기화와 종료라는 라이프사이클을 갖는다. public class Example{ public static void main(String[] args){ //1. 컨테이너 초기화 AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class); //2. 컨테이너에서 빈 객체를 구해서 사용 Greeter g = ctx.getBean("greater", Greeter.class); String.msg = g.greet("스프링"); System.out.println(msg); //3.컨테이너 종료 ctx.close(); } } (1) 컨테이너 초기화 ..
2021.08.09 -
백준 1987번 (골드 4) : 알파벳
https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net - 기본적인 생각은 처음부터 옳았으나, queue에 들어가는 아이들 중에서 중복이 있을 수 있다는 것을 전혀 생각하지 못하고 계속해서 deque를 이용해서 queue를 구현해서 사용했다. - 이 때문에 계속 시간 초과가 났고, 결국 set을 이용해서 queue를 구현하자 중복이 제거되어서 시간 초과가 해소되었다. import sys r,c = map(int, sys.stdin.readlin..
2021.08.09 -
백준 1260번 (실버 2) : DFS와 BFS
https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net - 단순히 BFS, DFS를 구현할 수 있으면 된다. - 중요한 것은 간선이 여러개면 작은 정점부터 방문하기 때문에, DFS, BFS를 실행하기 전에 sort를 한번 해줘야 한다는 점이다. import sys from collections import deque n,m,v = map(int, sys.stdin.readline().rstrip().split())..
2021.08.09 -
백준 1463번 (실버 3) : 1로 만들기
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net import sys n = int(sys.stdin.readline().rstrip()) lists = [0]*(n+1) answer = 0 for i in range(1,n+1): if i*3 lists[i]+1): lists[i*3] = lists[i] + 1 if i*2 lists[i]+1): lists[i*2] = lists[i] + 1 if i+1 lists[i]+1): lists[i+1] = lists[i] + 1 print(lists[n]) - 0부터 n까지의 인덱스를 가지고 있는 lists를 만든..
2021.08.09 -
[Spring5입문] 컴포넌트 스캔
- 컴포넌트 스캔 : 스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능 => 설정 클래스에 빈으로 등록하지 않아도 빈 등록이 가능하므로 설정 코드가 크게 줄어드는 이점이 있다. 1. @Component 애노테이션으로 스캔 대상 지정 - @Component : 해당 클래스를 스캔 대상으로 표시한다. @Component public class 클래스이름{ ... } - @Component 애노테이션에 값을 주었는지에 따라 빈으로 등록할 때 사용할 이름이 결정된다. => 값을 주지 않았을 때 : 클래스 이름의 첫 글자를 소문자로 바꾼 이름이 빈 이름으로 사용된다 => 값을 주었을 때 : 그 값을 빈 이름으로 사용한다 @Component public class ExampleClass{ ... } //이 경..
2021.08.08