본문 바로가기

분류 전체보기

(328)
@Bean vs @Compoent 머리말 Spring 프레임워크 AOP를 공부중에 Compoent와 Bean과의 차이가 뭔지 궁금하게 되어서 내용을 정리하는 시간을 갖고자 글을 작성하게 되었습니다. @BEAN 주로 @Confiuration 어노테이션이 들어간 Spring을 설정하는 클래스 내에 들어가는 메소드에서 선언한다. @Bean의 경우 보통은 외부 라이브러리를 사용해서 등록하고자 할때 사용합니다. 예를들면 ObejctMapper의 경우 ObjectMapper Class에 @Compoent를 선언 할수는 없으니 ObjectMapper의 인스턴스를 생성하는 메소드를 만들고 해당 메소드에 @Bean을 선언하여 Bean으로 등록한다. ModelMapper를 사용하게 되어서 아래와 같이 ModelMapper를 Bean에 등록하였습니다. 😊 ..
객체 생성과 파괴 머리말 자바 공부를 첫 시작하면서 이팩티브 자바 책을 선정하여 자바를 공부하려고 합니다. 저는 기존에 C/C++ Typescript 언어를 통하여 객체지향 개념이 어느정도 익숙하다고 생각하여 어느정도 난이도가 있는 책을 선정하게 되었습니다. 자바에서는 과연 객체를 어떻게 생성하고, 소멸시킬지 파해쳐 나아가 봅시다😀 생성자 대신 정적 팩터리 메서드를 고려하라 매개 변수가 많은 생성자일경우 클라이언트가 어떤 생성자를 사용해야할지 명확하게 구분 할 수 없으며 또한 필요하지않는 파라미터까지 제공을 해야하는 문제가 발생한다면 정적 팩터리 매서드를 사용하여 해당 문제를 해결할 수 있다. 정적 팩터리 메서드 사용시 장점 어떤 생성자를 생성할 것인지 메소드의 이름으로 유추를 할 수 있어 그 생성자가 어떤 역할을 하는지..
[백준] 1865번 : 웜홀 1865번: 웜홀 1865번: 웜홀 첫 번째 줄에는 테스트케이스의 개수 TC(1 ≤ TC ≤ 5)가 주어진다. 그리고 두 번째 줄부터 TC개의 테스트케이스가 차례로 주어지는데 각 테스트케이스의 첫 번째 줄에는 지점의 수 N(1 ≤ N ≤ 500), www.acmicpc.net 🤔 문제분석 밸만포드로 문제를 해결할 수 있습니다. 어떠한 노드에서 출발해도 상관이 없기때문에 1번 노드에서 출발 하여 문제를 해결하였습니다. 💻 코드 import sys input = sys.stdin.readline TC = int(input()) def bellman_ford(start): distance = [INF for _ in range(N+1)] distance[start] = 0 for n in range(N): f..
[백준] 1613번 : 역사 1613번: 역사 1613번: 역사 첫째 줄에 첫 줄에 사건의 개수 n(400 이하의 자연수)과 알고 있는 사건의 전후 관계의 개수 k(50,000 이하의 자연수)가 주어진다. 다음 k줄에는 전후 관계를 알고 있는 두 사건의 번호가 주어진다. www.acmicpc.net 🤔 문제분석 위상정렬과 플로이드 워셜로 풀 수 있는 문제입니다. 저는 처음에 문제를 풀때 위상정렬로 접근하였습니다. 위상정렬을 할때에 **부모노드를 자식노드에 업데이트(부모노드는 자식노드에게 내가 너보다 먼저 야 라고 표시)**하면서 자기자신을 방문할때 자기자신을 추가하면 됩니다. 💻 코드 import sys input = sys.stdin.readline INF = sys.maxsize n, k = map(int, input().spl..
[백준] 4179번 : 불! 4179번: 불! 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net 🤔 문제분석 불, 지훈 순으로 큐에 넣고 너비우선탐색을 하여 지훈이 그래프의 끝자락에 도착 할 수 있는 거리 + 1을 계산해주면된다. 만약, 불이 지훈이를 가로막는다면 지훈이는 갈 수 없다. 💻 코드 import sys input = sys.stdin.readline from collections import deque R, C = map(int, input().split()) table = [] queue = deque() j..
[백준] 11779번 : 최소비용 구하기2 11779번: 최소비용 구하기 2 11779번: 최소비용 구하기 2 첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스 www.acmicpc.net 🤔 문제분석 우선순위큐를 이용하여 문제를 해결하였는데요, 예전에 풀었던 유형이랑 비슷해서 문제를 쉽게 풀 수 있었습니다. 방문 경로를 구하는 로직은 거꾸로 우선순위큐를 역추적 하면됩니다. 말로는 어렵지만 코드를 보면 쉽게 이해 할 수 있습니다. 💻 코드 import sys import heapq input = sys.stdin.readline INF = sys.maxsize n = int(input..
[백준] 12851번 : 숨바꼭질 2 12851번: 숨바꼭질 2 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 🤔 문제분석 너비우선탐색으로 문제를 해결하였는데 처음 방문한경우와 이전위치에서 오는 경우 두가지를 따져서 모든 경우의 수를 구해야합니다. 💻 코드 import sys from collections import deque input = sys.stdin.readline N, K = map(int, input().split()) vistied = [-1] * 100001 queue = deque() qu..
[백준] 1600번 : 말이 되고픈 원숭이 1600번: 말이 되고픈 원숭이 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 🤔 문제분석 너비우선탐색과 방문배열을 K차원으로 두어 문제를 해결하였습니다. 너비우선탐색을 하게되면 x,y좌표에서 i번 움직였을때가 가장 최소거리임으로 3차원 배열을 만듭니다. 시작점으로부터 원숭이가 이동하는 방법과 말과 이동하는 방법 모두 탐색합니다. 💻 코드 import sys from collections import deque input = sys.stdin.readline K = int(input()) W..