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

2025/03 43

[백준 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

[백준 32344] 유물 발굴 [Java]

문제https://www.acmicpc.net/problem/32344 풀이유물들의 위치가 주어졌을 때 동일한 번호의 유물들을 감싸는 최대 크기의 직사각형을 구해야 한다.이중에서 가장 먼저 발굴하는 유물의 번호와 예상 크기를 구해야 한다.이를 위해서는 번호가 동일한 유물들의 위치에 대해 최소/최대값을 기록해야 한다. Arrays.fill(minRow, R + 1); Arrays.fill(minCol, C + 1); for (int i = 0; i 이후 반복문을 통해 최대 크기의 직사각형을 구해주고, 만약 유물의 번호가 작은 유물이 있다면 유물 번호를 변경하자. long resId = -1, resArea = -1; for (int id = 1..

[백준 31067] 다오의 경주 대회 [Java]

문제https://www.acmicpc.net/problem/31067 풀이주어진 배열 A의 모든 요소가 서로 다른 오름차순 배열로 만들기 위한 최소 횟수를 구하는 문제다.오름차순을 만들기 위해 요소에 K만큼 더할 수 있다. // Solve int cnt = 0; for (int i = 0; i 만약 조건에 부합하는 배열을 만들 수 없다면 결과를 -1로 변경하고 탐색을 중단하자. } else { cnt = -1; break; } }소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-..