전체 글(133)
-
[프로그래머스 - JAVA] 숫자 카드 나누기
문제 설명 철수와 영희는 선생님으로부터 숫자가 하나씩 적힌 카드들을 절반씩 나눠서 가진 후, 다음 두 조건 중 하나를 만족하는 가장 큰 양의 정수 a의 값을 구하려고 합니다.철수가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고 영희가 가진 카드들에 적힌 모든 숫자들 중 하나도 나눌 수 없는 양의 정수 a영희가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고, 철수가 가진 카드들에 적힌 모든 숫자들 중 하나도 나눌 수 없는 양의 정수 a예를 들어, 카드들에 10, 5, 20, 17이 적혀 있는 경우에 대해 생각해 봅시다. 만약, 철수가 [10, 17]이 적힌 카드를 갖고, 영희가 [5, 20]이 적힌 카드를 갖는다면 두 조건 중 하나를 만족하는 양의 정수 a는 존재하지 않습니다. 하지만, 철수가 [10, 2..
2024.07.17 -
[프로그래머스 - JAVA] PCCP 기출 2번 석유 시추
문제 세로길이가 n 가로길이가 m인 격자 모양의 땅 속에서 석유가 발견되었습니다. 석유는 여러 덩어리로 나누어 묻혀있습니다. 당신이 시추관을 수직으로 단 하나만 뚫을 수 있을 때, 가장 많은 석유를 뽑을 수 있는 시추관의 위치를 찾으려고 합니다. 시추관은 열 하나를 관통하는 형태여야 하며, 열과 열 사이에 시추관을 뚫을 수 없습니다. 예를 들어 가로가 8, 세로가 5인 격자 모양의 땅 속에 위 그림처럼 석유가 발견되었다고 가정하겠습니다. 상, 하, 좌, 우로 연결된 석유는 하나의 덩어리이며, 석유 덩어리의 크기는 덩어리에 포함된 칸의 수입니다. 그림에서 석유 덩어리의 크기는 왼쪽부터 8, 7, 2입니다. 시추관은 위 그림처럼 설치한 위치 아래로 끝까지 뻗어나갑니다. 만약 시추관이 석유 덩어리의 일부를..
2024.07.10 -
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