git 자동 push 쉘 스트립트 작성 작성된 sh파일은 cron 명령어를 통해 주기적 자동 배포가 가능함 1. ssh접근을 위해 리눅스 ssh key 생성 2. ssh key를 생성 후 값을 복사해 Git > Settings > SSH and GPG keys > SSH keys > New SSH key > 추가 후 저장 3. 해당 레포지토리의 ssh주소를 git remote에 추가 (ex git@github.com:Git_Name/Repository.git) git-sch.sh ** sh파일 내부 파일 경로에서 원하는 폴더 조작이 가능함 작성된 파일은 권한을 부여해서 사용할것 (chmod -x ./git-sch.sh)
배열의 크기가 동적(정해지지 않은 : 가변적인) 인 배열을 사용할때 사용되는 클라스 1. Vector - 필요에 따라 크기를 동적으로 조절할 수 있는 동적배열을 구현 - 배열과 마찬가지로 정수 인덱스를 이용하여 배열에 액세스 가능 - 동기화(Thread Safe) 되어있으며 한번에 하나의 스레드만 벡터의 메소드를 호출 할 수 있습니다. 2. ArrayList - 자바 표준 배열보다 약간 느릴수 있지만 배열에서 많은 조작이 필요로할때 유용하게 사용 - 기본 데이터 타입(int, char 등)에 대해 만들수 없기때문에 Integer, Object 등의 객체에 대해 참조해서 사용 3. 차이 - 동기화 -- Vector는 동기화가 가능한 반면 ArrayList는 동기화가 안됨 - 스레드 -- 스레드 안전이란 멀..
1. 스패닝 트리(STP) 그래프 상에서 모든 노드를 지날 수 있는 경우의 수 2. 최소 스패닝 트리(Minimum Spanning Tree, MST) 최소 스패닝 트리의 정의는 그래프에서 그래프의 모든 정점을 연결하되, 사이클이 존재하지 않도록 모든 정점을 간선으로 연결하는 것을 의미한다. 이때, 간선의 가중치 합을 최소로 하며 연결하여야 한다. - 크루스칼 알고리즘(Kruskal's Algorithm) 크루스칼 알고리즘은 모든 간선에 대해 가장 가중치가 작은 간선부터 연결 (간선 값을 오름차순으로 정렬해야함) 크루스칼 알고리즘 시간 복잡도 :: O(ElgE) - 프림 알고리즘(Prim's Algorithm) 프림 알고리즘은 하나의 시작점을 잡고 시작점과 연결된 정점들에 대해 가장 가중치가 작은 간선부..
JPA 구성 -> test 를 통한 작동 검사 TEST과정에서 파라미터 작동 확인하기 위해 @Valid 어노테이션을 통한 유효성 검사를 해야한다. RestaurantControllerTest에서 @Builer를 통해 데이터를 입력 후 Mock을 통해 데이터으의 유무과 결과 반환을 한다. 1. createWithValidData : 파라미터 유효성 성공 @Test public void createWithValidData() throws Exception{ given(restaurantService.addRestaurant(any())).will(invocation -> { Restaurant restaurant = invocation.getArgument(0); return Restaurant.builde..
소수찾기 알고리즘 기본 - 에라토스테네스의 체 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다. 2는 소수이므로 오른쪽에 2를 쓴다. (빨간색) 자기 자신을 제외한 2의 배수를 모두 지운다. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. (초록색) 자기 자신을 제외한 3의 배수를 모두 지운다. 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다. (파란색) 자기 자신을 제외한 5의 배수를 모두 지운다. 남아있는 수 가운데 7은 소수이므로 오른쪽에 7을 쓴다. (노란색) 자기 자신을 제외한 7의 배수를 모두 지운다. 위의 과정을 반복하면 구하는 구간의 모든 소수가 남는다. 반복문을 통하여 범위 내의 모든 자연수의 값을 모두 검사하..
게임개발자인 죠르디는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. 죠르디는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 1 x 1 크기의 칸들로 이루어진 N x N 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 5 x 5 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 1 x 1 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터..
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. - Map 을 이용해 참가자(participation)명단의 이름을 모두 Map에 입력학고 value값을 1로 저장 - 반복문을 토해 완주자(completion) 이름을 검색하여 value값을 -1을 하여 0으로 수정 - 최종적으로 0이 아닌 value값을 가지고 있는 key가 완주하지 못한 선수이다.

1. 동적계획법 - 여러 문제를 간단한 여러 개의 문제로 나누어 푸는 방법 - 각 하위 문제의 해결을 계산한 뒤, 그 해결책을 저장하여 후에 같은 하위 문제가 나왔을 경우 그것을 간단하게 해결할 수 있다. 이러한 방법으로 동적 계획법은 계산 횟수를 줄일 수 있다. 2. 동적 계획법 VS 그리디 알고리즘 - 모든 가능성을 고려해야하는 동적 계획법과 달리 최적해 (경로)를 구하여 문제를 푸는 방법으로 비교적 효율적인 알고리즘으로 본다. 예) 최단거리 로보트 이동 로보트가 위치한 방향에서 Goal을 향하는 경로룰 구하는 방법을 출력하는 문제로 상하좌우 모든 방향의 경로 이동을 시도해야하는 동적계획법 알고리즘 문제이다. 위 그림을 다음과 같이 행렬로 구현한다. boolean[][] grid = { {false,..
최장 공통 부분 수열(LCS)은 LIS 최장 증가 부분 수열과 비슷하게 생각하면 된다. LCS 또한 LIS와 같이 DP(동적 계획법)을 기반으로 한다. LCS 알고리즘을 통해 두개의 문자열을 비교하여 공통 부분 수열의 길이를 구할 수 있다. 주의할 점은 LCS는 Longest Common Substring과 Longest Common Subsequence이 존재한다. 공통 부분 문자열(Longest Common Substring), 공통 부분 수열(Longest Common Subsequence)이라고 말할 수 있다. 2개는 다른 의미를 가지고 있기 때문에 구분해야한다. 차이점은 연속 여부이다.
- Total
- Today
- Yesterday
- 프로그래머스
- Algorithm
- 디자인패턴
- 스프링
- 면접
- security
- 릿코드
- springboot
- ajax
- 매트랩
- Solid
- Matlab
- spring-cloud
- interview
- 알고리즘
- JPA
- 스프링부트
- Spring
- nginx
- C언어
- 자격증
- CS
- 백준
- 그래프
- 수학
- 자바
- kakao
- docker
- OOP
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |