본문 바로가기

전체 글

(239)
Docker Container는 어떻게 동작하나. How Docker Containers Work – Explained for Beginners 이 글은 위에 링크에 내용을 개인적으로 정리 + 내가 이해하기 쉽게 정리한 내용입니다. 오역이 있을 수도 있으니 조심하세요. How Docker Containers Work – Explained for Beginners A container is a lightweight, standalone, and executable software package that includes everything needed to run a piece of software. And one of the most popular tools for working with containers is Docker. Docker is both ..
백준 - 토마토(Python) 복습 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 1의 개수 : 익은 토마토 0의 개수 : 익지 않은 토마토 -1의 개수 : 토마토가 없는 곳 익은 토마토를 모두 큐에 넣고, 4방향으로 주변을 탐색(BFS)하면 된다. 주변 탐색 조건 : 1. 맵을 벗어나지 않는다.(row in range(m), col in range(n) 2. 익지 않은 토마토가 있다.(map[row][col] == 0) 최대한 탐색해서 만든 익힌 토마토의 개수..
백준 - 구슬 탈출 2(Kotlin) 제한사항 N, M (3 ≤ N, M ≤ 10) 문제 정리 구슬을 사방향 직선으로 움직일 수 있을 때, 빨간 구슬만 나오는 최소 움직임은? 접근 방법 일단, 최단 거리로 풀어야 하므로 BFS가 필요하다. BFS 사용하면 맵을 최신화 하는 방법은 불가능하다. 따라서, 맵을 최신화하지 않고 구슬을 움직여야 한다. 이 때, 문제점이 발생한다. 맵을 최신화하지 않는다면 구슬의 이동을 계산할 수 없어진다. 따라서, 이동하는 방향을 정항 때, 한 구슬은 뒤로 이동하면 된다. 이동하는 방향에 빨간 구슬이 있으면, 두 구슬을 이동한 후에 파란 구슬은 뒤로 한 칸 이동한다. 반대로 이동하는 방향에 파란 구슬이 있으면, 두 구슬을 이동한 후에 빨간 구슬은 뒤로 한 칸 이동한다. 코드 import java.io.Buffere..
백준 - 18500번: 미네랄(Kotlin) 제한사항 첫째 줄에 동굴의 크기 R과 C가 주어진다. (1 ≤ R,C ≤ 100) 다음 R개 줄에는 C개의 문자가 주어지며, '.'는 빈 칸, 'x'는 미네랄을 나타낸다. 다음 줄에는 막대를 던진 횟수 N이 주어진다. (1 ≤ N ≤ 100) 마지막 줄에는 막대를 던진 높이가 주어지며, 공백으로 구분되어져 있다. 모든 높이는 1과 R사이이며, 높이 1은 행렬의 가장 바닥, R은 가장 위를 의미한다. 첫 번째 막대는 왼쪽에서 오른쪽으로 던졌으며, 두 번째는 오른쪽에서 왼쪽으로, 이와 같은 식으로 번갈아가며 던진다. 느낀 점 아이디어 생각하는데 은근 시간을 뺏겼고, 구현하는 데에도 시간을 많이 뺏겼다. 요즘 느끼는 건데, 알고리즘에 큰 틀만 짜고 바로 코드 작성에 들어가면 이번처럼 코드가 꼬이거나 망가진다...
17780번: 새로운 게임 (Kotlin) 제한사항 4 ≤ N ≤ 12 4 ≤ K ≤ 10 문제 정리 체스판의 크기는 N * N 체스판의 칸의 색깔은 흰색, 빨간색, 파란색 중 하나 말은 1~K번까지 있다. 말 위에 말을 올릴 수 있다. 이동 방향은 위, 아래, 왼쪽, 오른쪽 4방향 턴마다 모든 말이 번호 순서대로 이동한다. 한 말이 이동할 때 위에 말도 동시에 이동하며, 가장 아래에 있는 말만 이동할 수 있다. 말이 4개 이상 쌓이면 게임 종료 접근 방법 구현 문제인데 생각보다 굉장히 까다로웠습니다. map을 이용해서 key값을 말의 번호, value를 tower로 했습니다. 복잡도 시간복잡도 : O(1000*k) → O(k) → 1000은 문제에서 주어진 제한 횟수이다. 코드 import java.io.BufferedReader import ..
1946번: 신입 사원(Kotlin) 제한사항 테스트 케이스의 개수 T(1 ≤ T ≤ 20) 지원자의 숫자 N(1 ≤ N ≤ 100,000) 서류 심사 순위와 면접 시험 순위가 주어진다. 문제 정리 서류심사와 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발합니다. 접근 방법 나보다 숫자가 둘다 작은 사람이 있으면 불합격 저는 처음에 서류를 등수순으로 정렬하고, 면접 순서 이전에 최소값을 구하는 방식으로 풀었습니다. 서류 등수로 정렬하게 되면 다음으로 오는 모든 참가자는 면접 순서가 이전 최소 등수보다 높지 않으면 무조건 불합격입니다. 예를 들어, 서류가 1등이고 면접이 4등이라고 생각해봅시다. 일단, 어차피 서류가 1등이라 넘어갑시다. 다음 참가자가 서류가 2등 면접이 5등이라고 생각해봅시다. 서류는 당연히 1등이 ..
1806번: 부분합(C++, Kotlin) 제한사항 N (10 ≤ N right - left + 1 ? right - left + 1 : minL..
9205번: 맥주 마시면서 걸어가기 제한사항 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (t ≤ 50) 각 테스트 케이스의 첫째 줄에는 맥주를 파는 편의점의 개수 n이 주어진다. (0 ≤ n ≤ 100). 다음 n+2개 줄에는 상근이네 집, 편의점, 펜타포트 락 페스티벌 좌표가 주어진다. 각 좌표는 두 정수 x와 y로 이루어져 있다. (두 값 모두 미터, -32768 ≤ x, y ≤ 32767) 송도는 직사각형 모양으로 생긴 도시이다. 두 좌표 사이의 거리는 x 좌표의 차이 + y 좌표의 차이 이다. (맨해튼 거리) 문제 정리 출발점에서 편의점을 들려서 도착점으로 가거나, 출발점에서 바로 도착점으로 간다. 접근 방법 출발점에서 도착점에 도달 가능한 경우가 무엇일까요? 딱 밑에 두 가지 경우입니다. 출발지에서 도착점까지 거리가 1000..