본문 바로가기

전체 글

프로그래머스 - 리코쳇 로봇(Java) bfs 문제입니다. 최소로 움직이는 횟수를 구하는 문제이기 때문에 bfs를 사용해야 한다는 것을 알 수 있습니다. 이 문제는 로봇이 상, 하, 좌, 우로 움직이되 벽이나 장애물(D)을 만나야 움직임을 멈춤니다. while (inRange(nx, ny) && board[nx].charAt(ny) != 'D') { nx += dx[i]; ny += dy[i]; } 즉, 지나가는 경로에 골인(G) 지점이 있더라도 도착한 것이 아닙니다. 로봇이 멈추는 곳이 골인 지점이여야만 합니다. [구현 코드] import java.util.*; class Solution { private final int[] dx = {-1, 1, 0, 0}; private final int[] dy = {0, 0, -1, 1}; priv.. 더보기
백준 - 20056 마법사 상어와 파이어볼(Java) 구현 문제입니다. 구현 순서는 다음과 같습니다. 모든 파이어볼이 자신의 방향 di로 속력 si칸 만큼 이동한다. 중복된 위치의 파이어볼을 합치고 분해한다. 남아있는 파이어볼의 질량을 더한다. 첫 번째는 이동했을 때 위치가 배열 밖에 있을 수 있다는 것을 유의해야 합니다. 문제 조건에 의해 1번 행, 열은 N번 행, 열과 연결되어있습니다. 때문에, 배열 범위를 벗어나면 반대편으로 이동시켜야 합니다. 두 번째는 삼차원 배열을 사용했습니다 자세한 것은 주석으로 달아놨으니 읽어보시기 바랍니다. 세 번째는 남아있는 파이어볼의 중량(m)만 더하시면 됩니다. [구현 코드] import java.io.*; import java.util.*; public class Main { private static final in.. 더보기
백준 - 14890 경사로(Java) https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 구현 문제입니다. 구현 순서는 다음과 같습니다. 이차원 배열에서 가로, 세로 행을 따로 추출한다. 추출된 배열의 높이가 같은지 확인한다. 높이가 같지 않다면 경사로를 겹치지 않게 설치할 수 있는지 확인한다 경사로를 겹치지 않게 설치할 수 있다면 설치한다. [구현 코드] import java.io.*; import java.util.Arrays; import java.util.StringTokenizer; public c.. 더보기
백준 - 20058 마법사 상어와 파이어스톰(Java) 구현 문제입니다. 문제 접근 순서는 다음과 같습니다. q만큼 반복한다. 범위 회전을 한다. 인접한 곳을 확인하여 얼음을 녹인다. 남아있는 얼음 정보를 구한다. 첫 번째는 q 만큼 반복하면서 회전할 범위 입력 받아 사용하시면 됩니다. 두 번째는 각 범위의 값을 회전하면 됩니다. private static void rotateIce(int[][] map, int[][] rotated, int x, int y, int size) { int ex = x + size; int ey = y + size; for(int i=x; i 0) { int l = Integer.parseInt(stz.nextToken()); int size = pow(l); // 2. 범위 회전을 한다. int[][] rotated = ne.. 더보기
3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 2 3.2 컨테이너를 동작시키기 위한 리소스 쿠버네티스에서 컨테이너를 동작시키기 위한 리소스에 대한 내용이다. 3.2.1 컨테이너를 동작시키기 위한 리소스의 종류 쿠버네티스는 여러 가지 오브젝트로 표현된다. 때문에, 기존의 인프라 구축이나 애플리케이션 배포와 달리 ‘작업’이 아닌 ‘오프젝트 상태 성언’이라는 형태로 환경을 정의할 수 있다. 쿠버네티스의 기본 오브젝트는 파드, 레플리카셋, 디플로이먼트, 서비스가 있다. 서비스를 제외한 기본 오브젝트와 기타 오브젝트를 설명한다. 즉, 3.2에서 설명할 것은 아래와 같다. 파드 디플로이먼트 레플리카셋 크론잡 잡 데몬셋 스테이트풀셋 네임스페이스 3.2.2 파드 쿠버네티스에서 프로그램을 동작시키는 최소 기본 단위이다. 파드는 하나 이상의 컨테이너를 합쳐 하나의 통합된.. 더보기
3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 1 3.1 목적과 내용 이전에 구축한 애플리케이션의 환경과 비교하면서 이론적인 내용으로 설명한다. 이전에 구축한 순서는 다음 그림과 같다. 3.1 목적과 내용 이전에 구축한 애플리케이션의 환경과 비교하면서 이론적인 내용으로 설명한다. 이전에 구축한 순서는 다음 그림과 같다. 더보기
백준 - 17472 다리 만들기 2(Java) https://www.acmicpc.net/problem/17472 17472번: 다리 만들기 2 첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 N개의 줄에 지도의 정보가 주어진다. 각 줄은 M개의 수로 이루어져 있으며, 수는 0 또는 1이다. 0은 바다, 1은 땅을 의미한다. www.acmicpc.net 구현 및 크루스칼 알고리즘 문제입니다. 문제 접근 순서는 다음과 같습니다. 각 섬을 넘버링 한다. 각 섬의 외각(가장자리) 부터 시작하여 다른 섬으로 갈 수 있는 모든 다리의 정보를 구한다. 다리의 크기를 기준으로 오름차순 정렬한다. 가장 작은 다리부터 선택하여 union-find로 각 섬을 연결한다. 모든 섬이 연결되지 않으면 -1을 반환한다. 첫 번째는 bfs를 통해 상,.. 더보기
백준 - 21609 상어 중학교(Java) https://www.acmicpc.net/problem/21609 21609번: 상어 중학교 상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N×N인 격자에서 진행되고, 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록 www.acmicpc.net 구현 문제입니다. 주어진 조건의 순서대로 구현을 해야 합니다. 크기가 가장 큰 블록 그룹을 찾는다. 그러한 블록 그룹이 여러 개라면 포함된 무지개 블록의 수가 가장 많은 블록 그룹, 그러한 블록도 여러개라면 기준 블록의 행이 가장 큰 것을, 그 것도 여러개이면 열이 가장 큰 것을 찾는다. 1에서 찾은 블록 그룹의 모든 블록을 제거한다. 블록 그룹에 포함된 블록의 수를 B라고 했을 때, B2점을.. 더보기