"꾸준하고 완벽한 한 걸음"

전체 글 798

[백준 01408] 24 [Java]

문제https://www.acmicpc.net/problem/1408 풀이두 시간대가 주어졌을 때 시간의 차를 계산하는 문제다.시작 시간과 종료 시간은 최대 48시간 차이가 날 수 있다. 이는 LocalTime.parse로 충분하다. // Input LocalTime start = LocalTime.parse(br.readLine()); LocalTime end = LocalTime.parse(br.readLine());시작 시간과 종료 시간의 차가 음수라면, 종료 시간은 시작 시간의 다음 날을 의미한다.24시간을 더한 후 올바른 차를 계산해서 출력하자. // Solve int totalSec = (int) Duration.between(st..

[백준 14335] 서로 다른 부분 수열의 개수 [Java]

문제https://www.acmicpc.net/problem/14335 풀이문자열 S에 대해 순서를 고려한 서로 다른 부분 수열의 수를 구하는 문제다.문자열의 길이가 최대 1,000으로 모든 부분 수열들을 구하고 중복을 제거한다면 시간 초과가 발생한다.순서를 고려하므로 중복되는 문자에 대한 부분 수열을 제거해야 한다.dp[i] : i번까지 문자들로 만들어진 서로 다른 부분 수열의 수중복을 고려하지 않고 부분 수열의 수를 기록하자. long[] dp = new long[N + 1]; dp[0] = 1; for (int i = 1; i 이제 중복되는 요소를 제거해보자.이전에 마지막으로 등장한 S[i - 1]의 위치를 j라고 하자..

[백준 32184] 디미고에 가고 싶어! [Java]

문제https://www.acmicpc.net/problem/32184 풀이페이지 A ~ B를 전부 촬영한다고 할 때 최소 촬영 횟수를 구하는 문제다.A가 짝수이고, B가 홀수일 때, 양 끝을 분리해서 촬영해야 하므로 필요한 최소 촬영 횟수는 $\frac{B - A}{2} + 2$이다. 이 외에는 겹쳐서 촬영이 되기 때문에 $\frac{B-A}{2} + 1$이 된다. // Solve & Output if (A % 2 == 0 && B % 2 == 1) { System.out.println((B - A) / 2 + 2); } else { System.out.println((B - A) / 2 + 1); } }}소..

[백준 01388] 바닥 장식 [Java]

문제https://www.acmicpc.net/problem/1388 풀이주어진 보드에서 ‘|’ 또는 ‘-’ 모양의 타일을 각각 세로와 가로로 전부 연결해서 만들어지는 판자들이 몇개 인지 구하는 문제다.판자가 아닌 타일들을 방문하면서 규칙에 따라 하나의 판자로 만들어주는 횟수를 세면 된다. // Solve int cnt = 0; for (int i = 0; i 현재 타일의 종류에 따라 가로 또는 세로로 연결된 동일한 종류의 타일들을 모두 방문해주자.만약 다른 종류의 타일이 나온다면 더 이상 연결할 수 없으므로 탐색을 중단해야 한다. private static void connect(int x, int y, char type) { if (type ==..

[Java] Java에서의 Heap과 Priority Queue(for Algorithm Guide)

목차Heap이란?Priority Queue란?패키지선언 예제주요 연산offer(element) / add(element)peek()poll()최대 힙(Max-Heap) 구현Comparator.reverseOrder() 또는 람다를 이용한 방법네거티브 트릭 (Numeric 데이터에 한정)복합 데이터의 정렬과 Comparator 구현Heap이란?완전 이진 트리(Complete Binary Tree) 형태의 자료구조로, 각 노드가 특정한 순서 조건을 만족한다. 💡완전 이진 트리 구조란?모든 레벨이 완전히 채워지며, 마지막 레벨은 왼쪽부터 순서대로 채워지는 구조정렬 조건최소 힙: 모든 부모 노드의 값 ≤ 자식 노드의 값최대 힙: 모든 부모 노드의 값 ≥ 자식 노드의 값주요 특징 및 시간복잡삽입 및 삭제: O(..

[백준 32154] SUAPC 2024 Winter [Java]

문제https://www.acmicpc.net/problem/32154 풀이문제의 주어진 스코어보드에 대해 등수에 맞는 팀의 대회 기록을 출력하면 된다.문제에서 주어지는 스코어보드를 데이터화하자.import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // Input final int N = Integer.parseInt(br.readLine()); // Solve String[][] boar..

[백준 13022] 늑대와 올바른 단어 [Java]

문제https://www.acmicpc.net/problem/13022 풀이주어진 문자열이 패턴 ‘wolf’으로 구성되는지 확인하는 문제다.문자열의 길이는 50이므로 길이가 4배수인 패턴을 미리 생성하고 비교하거나 replace해주는 방식도 있지만, 정직(?)하게 풀어보았다.우선 문자열의 시작은 ‘w’로 시작해야한다. static char[] ptn = "olf".toCharArray(); private static boolean check(char[] S) { int idx = 0, gap = 0; while (idx 그리고 ‘w’가 아닌 다른 문자가 나올 때 까지 연속된 ‘w’의 수를 세주자. while (idx 연속된 ‘w’의 수만큼 패턴 ‘o..

[백준 27370] 친구와 배달하기 [Java]

문제https://www.acmicpc.net/problem/27370 풀이$P_A$, $P_B$에서 N개의 목적지를 전부 방문했을 때, 이동거리 총합의 최솟값과 두 지점의 이동거리 차이의 최솟값을 구하는 문제다.우선 두 지점을 오름차순으로 교환해주고 if (Pa > Pb) { int temp = Pa; Pa = Pb; Pb = temp; }우선 이동거리 총합이 최소가 되야 하기 때문에 두 지점의 평균값을 기준으로 각 지점의 이동거리를 계산해준다. final int mid = (Pa + Pb) / 2; long A = 0, B = 0; ..

[시작하세요! 도커/쿠버네티스] 01장 도커란?

목차1.1 가상 머신과 도커 컨테이너1.2 도커를 시작해야 하는 이유1.2.1 애플리케이션의 개발과 배포가 편해집니다.1.2.2 여러 애플리케이션의 독립성과 확장성이 높아집니다.1.3 도커 엔진 설치1.3.1 도커 엔진의 종류 및 버전1.3.2 리눅스 도커 엔진 설치1.3.3 윈도우, 맥 OS에 도커 설치1.3.4 리눅스 환경에 도커 마련하기01 도커란?도커는 애플리케이션을 컨테이너로서 사용할 수 있게 만들어진 Go 언어 기반의 오픈소스 프로젝트다.리눅스 컨테이너에 여러 기능을 추가해 만들어졌다.가상 머신과 달리 성능의 손실이 거의 없다.일반적으로 도커는 도커 엔진 또는 도커와 관련된 모든 프로젝트를 의미한다. 💡도커 엔진(Docker Engine)이란?컨테이너를 생성하고 관리하는 주체 도커의 여러 프..

Dev/Docker 2025.03.25

[시작하세요! 도커/쿠버네티스] 서문

도커의 한계와 여러 컨테이너 오케스트레이션 툴의 등장💡컨테이너 오케스트레이션 툴이란?여러 컨테이너를 효율적으로 배포, 관리, 확장 및 네트워킹하는 자동화 도구 2016년, 도커만으로는 대규모 운영 환경을 구축할 수 없었다.이를 해결하고자 다양한 컨테이너 오케스트레이션 툴이 등장(랜처, 스웜모드 등)했다.  쿠버네티스는 사실상 표준그럼에도 불구하고 결국 클라우드 및 인프라 업계에서는 쿠버네티스가 사실상 표준으로 사용되고 있다.✅도커 다음으로는 쿠버네티스를 배워보자!  쿠버네티스의 높은 러닝커브다른 한편으로는 쿠버네티스는 컨테이너 기술의 진입 장벽을 높인 것 같다.쿠버네티스는 굉장히 방대한 프로젝트이므로 책에서 모든 것을 설명할 수 없다. 공식문서 또는 구글링 등을 활용하자  Github 및 예제 파일ht..

Dev/Docker 2025.03.24