분류 전체보기(137)
-
LinkedList, Stack, Queue, Deque, PriorityQueue 사용법 정리
LinkedList 노드를 연결해 리스트처럼 사용하는 컬랙션데이터의 삽입, 삭제에 빠른 성능을 보이지만 특정 요소에 접근하는 성능은 ArrayList에 비해 떨어진다. 뒤에서 사용할 stack, queue, dequeue, priorityQueue의 근간이 되는 컬랙션이다. import java.util.*;import java.lang.*;import java.io.*;class Main { public static void main(String[] args) { LinkedList link_list = new LinkedList(); link_list.add(1); // 값 넣기 link_list.add(2); link_list.add(3); ..
2024.07.04 -
Github Action CI/CD 개발/배포 분리 전략 (feat: 브랜치 분리 이유)
목차branch 분리 구현 이유 및 방식gradle.yml 파일 전략 변경점 branch 분리 구현 이유 및 방식 자동화 배포로 인해 원치 않은 자료까지 배포되던 문제 해결을 위한 방법으로 개발 branch와 배포 branch를 분리해 사용하기로 하였다. 기존 프로젝트에서 저장 및 배포는 master 브랜치에서 이뤄졌다. 이론상으로 많은 사람들이 배포와 개발을 분리해서 진행하는 것이 옳다는 것을 알았지만 이번 자동화 배포를 왜 그렇게 하는지 절실하게 느끼게 되었다. 1. 문제점 단일 브랜치를 이용 문제 단일 브랜치(master)에서 개발/배포를 동시에 진행하면 별도의 pull request 없이 push하는 순간 테스트 후 자동 배포가 된다. 별도 작업 없이 push만하면 배포가되니 편하기는 했지만 하..
2024.07.02 -
[9663 - JAVA] N-Queen
문제 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.입력 첫째 줄에 N이 주어진다. (1 ≤ N 출력 첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다. 풀이 문제 풀 때 상하좌우 즉 가로 세로 부분 확인하는 아이디어는 금방 떠올랐지만 대각선 일치 여부를 확인하는 아이디어를 떠올리는데 실패해 검색을 통해 방법을 알아냈다. 대각선의 겹침 여부를 알아내는 방법으로는 행, 열의 차이 값을 비교해 알 수 있는데| row_1 - row_2 | == | col_1 - col_2 | 일치한다면 대각선이 겹치는 것이고 아니라면 겹치지 않는다. 해당 공식만 알고 있다면 일반적인..
2024.06.15 -
Github Action 이용한 CI/CD Spring Server 자동화 배포 (feat: Synology Nas)
프로젝트를 배포할 때 도커 이미지를 수동으로 도커 허브로 push 하고 다시 시놀로지 나스 도커로 poll 해오는 과정이 매우 귀찮기 때문에 깃허브에 올린 코드를 자동으로 재배포하는 파이프라인을 구축하게 되었습니다. 목차시놀로지 나스 ssh 접속 키 발급gradle.yml 파일 생성시놀로지 나스 ssh 접속 키 발급 시놀로지 나스 도커에 GitHub Actions를 이용해 배포하려면 SSH 접속을 위한 키가 필요합니다. 우선 SSH 접속을 허용하고 나스에 접속합니다. Windows에서는 Putty를 이용해 접속하고, Mac에서는 터미널에서 SSH를 통해 접속합니다.접속하는 시놀로지 나스 계정은 도커 제어 권한이 있어야 합니다. 계정의 루트 디렉토리에 .ssh 폴더를 생성하고 해당 폴더에 접속합니다. Na..
2024.06.05 -
[1202 - JAVA] 보석 도둑
문제 세계적인 도둑 상덕이는 보석점을 털기로 결심했다.상덕이가 털 보석점에는 보석이 총 N개 있다. 각 보석은 무게 Mi와 가격 Vi를 가지고 있다. 상덕이는 가방을 K개 가지고 있고, 각 가방에 담을 수 있는 최대 무게는 Ci이다. 가방에는 최대 한 개의 보석만 넣을 수 있다.상덕이가 훔칠 수 있는 보석의 최대 가격을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000)다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000)다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci ≤ 100,000,000)모든 숫자는 양의 정수이다. 출력 첫째 줄에 상덕이가 훔칠 수 있는 보석 가격..
2024.06.03 -
[1992 - JAVA] 쿼리트리
문제 흑백 영상을 압축하여 표현하는 데이터 구조로 쿼드 트리(Quad Tree)라는 방법이 있다. 흰 점을 나타내는 0과 검은 점을 나타내는 1로만 이루어진 영상(2차원 배열)에서 같은 숫자의 점들이 한 곳에 많이 몰려있으면, 쿼드 트리에서는 이를 압축하여 간단히 표현할 수 있다.주어진 영상이 모두 0으로만 되어 있으면 압축 결과는 "0"이 되고, 모두 1로만 되어 있으면 압축 결과는 "1"이 된다. 만약 0과 1이 섞여 있으면 전체를 한 번에 나타내지를 못하고, 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래, 이렇게 4개의 영상으로 나누어 압축하게 되며, 이 4개의 영역을 압축한 결과를 차례대로 괄호 안에 묶어서 표현한다위 그림에서 왼쪽의 영상은 오른쪽의 배열과 같이 숫자로 주어지며, 이 영상을 쿼드..
2024.05.24