일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 1251
- 최단경로탐색
- professional
- 백엔드
- 코딩테스트
- 백준
- backend
- dp
- 최단경로
- D4
- 골드3
- swea
- 스프링
- 실버1
- 트리의지름
- 완전탐색
- 중복순열
- SW역량테스트
- 골드5
- SW역량평가
- Framework
- java
- Floyd
- BOJ
- 순열
- BFS
- 최소신장트리
- 알고리즘
- 그래프
- Spring
- Today
- Total
목록java (25)
공부 기록장

이번 포스팅에서는 스프링에서 중요한 개념 중 하나인 loC과 DI에 대해 다뤄보려고 한다. 먼저 loC란, Inversion of Control, 즉 제어의 역행을 뜻한다. 조금 풀어서 얘기하자면, 기존에는 필요한 위치에서 개발자가 필요한 객체 생성 로직을 구현했다면, 객체 생성을 컨테이너에게 위임해서 처리하는 방식이다. 스프링에서는 인터페이스를 호출해서 사용하기 때문에 구현 클래스 교체가 용이하다. 컨트롤러에서 각 서비스를 이용할 때, 인터페이스 객체를 불러서 사용하므로 클래스 내용이 변경되어도 따로 변경해주어야 할 것이 없다. 또, factory를 호출해서 팩토리가 구현 클래스를 생성하므로 인터페이스 변경시 팩토리만 수정하면 된다. 따라서 service를 이용하는 쪽에서는 인터페이스만 알고 있으면 어..

이 문제는 백준 실버 2 레벨의 문제이다. 이 문제는 실버 2임에도 불구하고 뭔가 생각해야 할 것도 많고 되게 까다로웠다. 처음에는 식을 어떻게 세워야 할 지 몰라서 헤매고 있었는데 스터디 같이 하던 오빠가 어떤식으로 풀면 되는지 알려주었다. 1) (나 [와 같은 열리는 괄호가 나오면 스택에 넣어주기 2) 닫히는 괄호가 나왔을 때 스택 제일 위에 있는 것이 짝이 맞는 열리는 괄호라면 2 혹은 3 으로 바꿔주기 3) 열리는 괄호가 아니라면 스택을 검사하며 열리는 괄호가 나올 때 까지 값을 더해주거나 곱해주기. 4) 단, 짝이 맞지 않는 열리는 괄호가 나오면 올바르지 않은 문장이기 때문에 종료. 이게 가장 큰 틀이다. import java.util.Scanner; import java.util.Stack; ..

이 문제는 백준의 골드 5레벨 문제이다. 어제부터 어떤 분이 정리해두신 코딩테스트 대비를 위한 문제 리스트를 풀고 있는데, 레벨별로 정말정말 정리를 잘 해두셨다. 이 문제도 그 문제 중 하나였다. 시뮬레이션 기본 문제라고 하셨는데, 사실 골드 5 레벨 치고는 좀 쉬웠던 것 같다. 문제 푸는 시간보다 블로그 포스팅이 더 오래걸릴 수도 있겠다는 생각이 들 정도로..? 이 문제는 빗물이 쌓인 부분들을 계산하면 되는 문제인데, 1) 2차원 배열을 만들어서 땅이 있는 부분이라면 1을 저장해준다. 2) 2차원 배열을 처음부터 돌면서 2-1) 이번에 도착한 곳이 땅인데 지난번에 도착한 곳도 땅이라면 temp = 0 2-2) 이번에 도착한 곳이 빈 공간인데 지난번에 땅이였다면 카운팅 스타트! 2-3) 이번에 도착한 곳..

오늘부터 여러개의 포스팅에 걸쳐 스프링을 정리해보려고 한다. 스프링은 왜 탄생했는가? 원래 스프링을 사용하기 전에는 EJB를 사용했다. EJB를 사용하면 상태관리, 멀티 쓰레딩, 리소스 풀링과 같은 것들을 WAS 단계에서 알아서 처리해주기 때문에 개발자가 따로 건드릴 필요가 없다는 장점이 있다. 하지만 EJB라는 서버가 따로 필요하고, 코드를 수정해서 재 배포하는 과정이 복잡해서 유지보수가 어렵다는 단점이 있었다. 게다가 웹사이트가 점점 커지면서 EBJ를 사용하지 않고도 쓸 수 있는 새로운 프레임워크가 필요했다. 그래서 POJO가 생겨났다. POJO는 특정 프레임워크나 기술에 의존적이지 않은 자바 객체인데, 특정 기술에 종속적이기 않기 때문에 생산성과 이식성이 높다. 또, AOP(Aspect Orient..

이 문제는 백준의 골드 3레벨 문제이다. 이 문제는 구현해야 할 게 많아서 혹시 어디선가 틀리면 디버깅하기가 너무 막막했는데, 다행히 한번에 맞았습니다가 나왔다ㅠㅠㅠㅠ 감격... 하여튼, 이 문제는 이런 방식으로 풀어냈다. 1. 층 정하기(Floor, 순열) 2. 각 층의 방향 정해주기(direction, 중복순열) 3. 층이랑 방향대로 map에 넣어주기.(change) 4. 시작점인(0,0,0)이 1이라면 들어가기. (bfs) 이 과정을 계속해서 반복하면 된다. 층은 총 5개이고, 각 층마다 4개의 방향을 가질 수 있으니 5!*4^5 개의 조합이 생긴다. 이 것들을 다 돌려주면 된다. 일단 Floor 함수에서는 boolean 배열과 int 배열을 이용해 5개의 판을 가지고 순열을 만들어준다. 만약 cn..

이 문제는 SWEA의 D4 레벨, [Professional] 구간 합 이라는 문제이다. 이 문제도 수업에서 다뤘던 내용인데, 선생님께서 식 안 알려주셨으면 무조건 틀렸을거다. 실제로 내 마음대로 풀었다가 시간초과 나서 실패했다. import java.util.Scanner; public class 구간합 { static long start, end; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = sc.nextInt(); for(int tc=1; tc

이 문제는 SWEA에 있는 모의 SW 역량테스트 탈주범 검거 문제이다. A형 정도의 구현력을 요구하는 문제라고 한다. 보다시피 문제가 좀 길다ㅠ 그래서 지난번 처럼 링크로 가지고 올 까 했는데, 여기서는 문제를 같이 보는게 편할 것 같아 캡쳐해왔다. 이 문제는 조건이 많아서 까다로운 문제이다. 각 파이프마다 갈 수 있는 곳이 달라서 그 부분 처리를 해주는데 조금 애를 먹었다. 그래도 조금만 생각해보면, 전역변수를 이용해 if문을 왕창 쓰는 것을 막을 수 있다. static int[][] dr = {{0,0,0,0},{-1,1,0,0},{-1,1,0,0},{0,0,0,0},{-1,0,0,0},{0,1,0,0},{0,1,0,0},{-1,0,0,0}}; //1번 - 7번 static int[][] dc = {..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRQm6qfL0DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 이 문제는 SWEA 아카데미 모의 SW 역량테스트 문제이다. 이 문제가 SW역량평가 Advanced, 우리가 알고 있는 A레벨 정도의 문제라고 한다. 로직 자체가 어렵기 보다는, 구현을 잘 해내야 하는게 조금 어려웠다. 처음에는 한번 쏜 위치에는 공을 못 쏘는 줄 알았는데, 똑같은 곳에 또 쏠 수 있어서 그거 고치느라 시간이 조금 걸렸고, 맵을 깨진 블럭들을 없애고 남은 블럭들을 옮겨주는 과정에서 ..