1717번: 집합의 표현 초기에 $n+1$개의 집합 $\{0\}, \{1\}, \{2\}, \dots , \{n\}$이 있다. 여기에 합집합 연산과, 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산을 수행하려고 한다. 집합을 표현하는 프로그램을 작 www.acmicpc.net 문제 집합 0~N+1이 주어졌을 때 합집합 연산과 같은 집합에 속하는지 여부를 체크하여 출력하시오. 풀이 유니온 파인드를 물어보는 문제였다. 📌 입출력 StringBuilder sb = new StringBuilder(); for(int i=0; i
분류 전체보기
1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 문제 그래프의 정점을 둘로 나누어 인접하는 정점끼리는 다른 집합에 속하게 분리할 수 있을 때 이분 그래프라고 한다. 주어진 그래프가 이진 그래프인지 판별하여 출력하시오. 풀이 각 정점들을 BFS로 탐색하면서 2가지 “1”과 “-1” 집합으로 담고 인접한 정점이 자신의 집합과 같다면 NO를 출력하도록 구현하였다. 📌 BFS public static void BFS(int start){ Queue q = new LinkedList(); binary[start] = ..
18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 문제 단방향 도로가 있는 도시들이 있고 출발지가 주어졌을 때 거리가 K인 도시를 모두 출력하시오. 풀이 출발지로부터 깊이를 구하는 문제라고 생각했고 BFS를 통해 문제를 풀었습니다. 입력 for(int i=0; i K) break; } } now값의 depth를 다음 노드에 추가하여 depth들을 만들었습니다. 속도를 더 빠르게 하기 위해서 현재 노드의 depth값이 K보다 커지면 종료했습니..
개요 젠킨스를 이용하면서 도커를 이용해서 배포를 진행하고 있었기 때문에 sudo 권한이 필요했다. 따라서 젠킨스에게 sudo 권한을 주는 방법을 알아보자. 본론 먼저 저는 Ubuntu20.04 LTS 에서 진행하였고 Vim을 사용했습니다. 권한 획득 sudo su 명령어를 통해서 root 계정으로 진행하였습니다. 젠킨스 권한 설정 1. /etc/sudoers.d 디렉토리로 이동합니다. cd /etc/sudoers.d 2. Jenkins의 권한을 설정하기 위한 파일을 하나 생성합니다. touch jenkins 3. jenkins의 권한을 설정하여 줍니다. vim jenkins jenkins ALL=(ALL) NOPASSWD: ALL 4. jenkins 파일의 권한을 설정하여 줍니다. chmod 0440 j..
개요 프로젝트를 진행하면서 젠킨스를 통해 배포를 자동화하였다. 하지만 스프링 부트 프로젝트에 HTTPS를 적용시키기 위한 키 파일은 깃허브에 올리지 않았고 젠킨스에서 빌드할 때는 .p12 파일이 없어 오류가 발생했다. 따라서 미리 젠킨스가 빌드 작업을 하는 워크스페이스에 .p12 파일을 넣어두기로 했다. 본론 먼저 테스트를 위한 아이템을 하나 만들겠습니다. 디렉토리의 파일들을 보기 위해서 다음과 같은 파이프라인 스크립트를 작성해주었습니다. pipeline { agent any stages { stage('ls'){ steps{ sh 'ls' } } } } 성공적으로 실행하고 나면 jenkins workspace에 폴더가 생긴 것을 볼 수 있습니다. 📌 젠킨스 워크스페이스 폴더 /var/lib/jenkin..
개요 기존에 사용한 파이프라인은 직접 젠킨스에 작성해서 실행시켰다. 하지만 이 파이프라인도 IDE를 이용하여 보다 편리하게 작성하고 싶었고 깃허브를 통해서 버전관리를 해주고 싶어 Jenkinsfile을 통해 파이프라인을 실행하여 보겠다. 본론 📌 기존 방식 기존의 방식은 위와같이 직접 파이프라인 스크립트를 젠킨스에 작성하였다. 📌 Jenkinsfile 사용 Definition을 Pipeline script from SCM 으로 변경해주고 SCM을 Git으로 설정해준다. Repository URL : 자동 배포를 하려는 레포지토리 URL을 입력해준다. Credentials : Github의 Webhook을 통해 빌드하기 위한 크리덴셜을 선택해준다. Branch Specifier : 가져오려는 프로젝트의 브..
개요 Mac OS에서 빌드한 이미지를 Ubuntu 20.04에서 실행하려고 했더니 발생한 오류 이미지의 플랫폼이 현재 컨테이너로 실행하려는 호스트의 플랫폼과 호환되지 않는다는 것이다.! 해결 이미지로 빌드할 때 아래의 커맨드를 입력하여 주면된다. docker buildx build --platform linux/amd64,linux/arm64 -t {태그명} --push . 위의 명령어로 플랫폼을 지정해주고 바로 푸시해주게된다. 결과 성공! [Docker] WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64/v3) and no specific platform..
개요 집에 있는 PC에 우분투를 설치하여 서버용으로 사용하기 위해서 윈도우를 제거하고 우분투를 설치하였다. 📌 순서 ubuntu osi 설치 Rafus 툴 설치 바이오스를 통해서 우분투 설치 ❗ USB가 반드시 필요합니다. 본론 📌 ubuntu 설치 Ubuntu 20.04.6 LTS (Focal Fossa) Select an image Ubuntu is distributed on three types of images described below. Desktop image The desktop image allows you to try Ubuntu without changing your computer at all, and at your option to install it permanently late..