본문 바로가기

전체 글

(56)
[대규모 머신러닝 시스템 디자인 패턴] 머신러닝 서빙 시스템을 위한 책 대규모 시스템을 구축하기 위한 안내서이 책을 서평 신청하기 전에는 사실 대규모 머신러닝 보다는 디자인 패턴에 더 관심이 있어서 해당 책을 신청하게 되었다. 해당 책은 시스템 설계와 관련된 내용이 주를 이루며 혹시라도 머신러닝과 관련된 코드를 더 많이 보고자 하는 사람들은 다른 책을 봐야할 것이다. 해당 책이 아예 머신러닝 코드를 다루지 않는 것은 아니지만, 기본적으로는 시스템 설계를 어떻게 진행해야하는지, 설계함에 있어서 어떤 부분을 놓치면 안되는지에 대해서 그림으로 알려주는 책이다.위와 같이 삽화들이 굉장히 많다. 아무래도 설계와 관련된 책이다 보니, 위와 같은 그림이 없으면 이해하기 힘들 수 있었는데 해당 책은 시스템 설계에 해당하는 많은 삽화를 삽입하였다. 책은 아주 기초적인 시스템을 바탕으로 어떤..
[백준] 19237 - 어른 상어 출처 : https://www.acmicpc.net/problem/19237 문제 청소년 상어는 더욱 자라 어른 상어가 되었다. 상어가 사는 공간에 더 이상 물고기는 오지 않고 다른 상어들만이 남아있다. 상어에는 1 이상 M 이하의 자연수 번호가 붙어 있고, 모든 번호는 서로 다르다. 상어들은 영역을 사수하기 위해 다른 상어들을 쫓아내려고 하는데, 1의 번호를 가진 어른 상어는 가장 강력해서 나머지 모두를 쫓아낼 수 있다. N×N 크기의 격자 중 M개의 칸에 상어가 한 마리씩 들어 있다. 맨 처음에는 모든 상어가 자신의 위치에 자신의 냄새를 뿌린다. 그 후 1초마다 모든 상어가 동시에 상하좌우로 인접한 칸 중 하나로 이동하고, 자신의 냄새를 그 칸에 뿌린다. 냄새는 상어가 k번 이동하고 나면 사라진다. ..
[백준] 19236 - 청소년 상어 출처 : https://www.acmicpc.net/problem/19236 문제 아기 상어가 성장해 청소년 상어가 되었다. 4×4크기의 공간이 있고, 크기가 1×1인 정사각형 칸으로 나누어져 있다. 공간의 각 칸은 (x, y)와 같이 표현하며, x는 행의 번호, y는 열의 번호이다. 한 칸에는 물고기가 한 마리 존재한다. 각 물고기는 번호와 방향을 가지고 있다. 번호는 1보다 크거나 같고, 16보다 작거나 같은 자연수이며, 두 물고기가 같은 번호를 갖는 경우는 없다. 방향은 8가지 방향(상하좌우, 대각선) 중 하나이다. 오늘은 청소년 상어가 이 공간에 들어가 물고기를 먹으려고 한다. 청소년 상어는 (0, 0)에 있는 물고기를 먹고, (0, 0)에 들어가게 된다. 상어의 방향은 (0, 0)에 있던 물고기..
[백준] 19238 - 스타트 택시 출처 : https://www.acmicpc.net/problem/19238 문제 스타트링크가 "스타트 택시"라는 이름의 택시 사업을 시작했다. 스타트 택시는 특이하게도 손님을 도착지로 데려다줄 때마다 연료가 충전되고, 연료가 바닥나면 그 날의 업무가 끝난다. 택시 기사 최백준은 오늘 M명의 승객을 태우는 것이 목표이다. 백준이 활동할 영역은 N×N 크기의 격자로 나타낼 수 있고, 각 칸은 비어 있거나 벽이 놓여 있다. 택시가 빈칸에 있을 때, 상하좌우로 인접한 빈칸 중 하나로 이동할 수 있다. 알고리즘 경력이 많은 백준은 특정 위치로 이동할 때 항상 최단경로로만 이동한다. M명의 승객은 빈칸 중 하나에 서 있으며, 다른 빈칸 중 하나로 이동하려고 한다. 여러 승객이 같이 탑승하는 경우는 없다. 따라서 ..
[백준] 19235 - 모노미노도미노 출처 : https://www.acmicpc.net/problem/19235 문제 모노미노도미노는 아래와 같이 생긴 보드에서 진행되는 게임이다. 보드는 빨간색 보드, 파란색 보드, 초록색 보드가 그림과 같이 붙어있는 형태이다. 게임에서 사용하는 좌표 (x, y)에서 x는 행, y는 열을 의미한다. 빨간색, 파란색, 초록색 보드가 사용하는 좌표는 그 색으로 그림에 적혀있다. 이 게임에서 사용하는 블록은 타일 하나 또는 두 개가 가로 또는 세로로 붙어있는 형태이다. 아래와 같이 세 종류가 있으며, 왼쪽부터 순서대로 크기가 1×1, 1×2, 2×1 이다. 블록을 놓을 위치를 빨간색 보드에서 선택하면, 그 위치부터 초록색 보드로 블록이 이동하고, 파란색 보드로 블록이 이동한다. 블록의 이동은 다른 블록을 만나거..
[Level 4] 한국코드페어 - 외주 출처 : https://level.goorm.io/exam/49104/%EC%99%B8%EC%A3%BC/quiz/1 외주 형기는 뛰어난 개발 실력을 가지고 있지만 게을러서 아직 일자리를 구하지 못했다. 사실 집에서 뒹굴거리는 게 더 좋아서 구할 생각도 없는 듯하다. 그러던 어느 날, 형기는 슬슬 새 컴퓨터를 장만해야겠다고 생각이 들었고 그러려면 돈이 필요하다는 것을 깨달았다. 어쩔 수 없이 형기는 외주작업을 맡아 함으로써 돈을 벌고자 한다. 형기는 외주 전문 사이트에 글을 올린 후, 그대로 잠이 들었다. 다음 날 일어나서 자신이 올린 글을 확인해보니 수많은 외주작업 요청이 들어온 것을 보고는 입이 쩍 벌어졌다. 벌써부터 돈이 굴러들어오는 생각에 입꼬리가 올라갔지만, 각 외주작업의 요청에는 계약금과 마감기..
[프로그래머스] Level 3 - 종이접기 문제 : https://programmers.co.kr/learn/courses/30/lessons/62049 문제 설명 직사각형 종이를 n번 접으려고 합니다. 이때, 항상 오른쪽 절반을 왼쪽으로 접어 나갑니다. 다음은 n = 2인 경우의 예시입니다. 먼저 오른쪽 절반을 왼쪽으로 접습니다. 다시 오른쪽 절반을 왼쪽으로 접습니다. 종이를 모두 접은 후에는 종이를 전부 펼칩니다. 종이를 펼칠 때는 종이를 접은 방법의 역순으로 펼쳐서 처음 놓여있던 때와 같은 상태가 되도록 합니다. 위와 같이 두 번 접은 후 종이를 펼치면 아래 그림과 같이 종이에 접은 흔적이 생기게 됩니다. 위 그림에서 ∨ 모양이 생긴 부분은 점선(0)으로, ∧ 모양이 생긴 부분은 실선(1)으로 표시했습니다. 종이를 접은 횟수 n이 매개변수로..
[백준] 7579 - 앱 문제 우리는 스마트폰을 사용하면서 여러 가지 앱(App)을 실행하게 된다. 대개의 경우 화면에 보이는 ‘실행 중’인 앱은 하나뿐이지만 보이지 않는 상태로 많은 앱이 '활성화'되어 있다. 앱들이 활성화 되어 있다는 것은 화면에 보이지 않더라도 메인 메모리에 직전의 상태가 기록되어 있는 것을 말한다. 현재 실행 중이 아니더라도 이렇게 메모리에 남겨두는 이유는 사용자가 이전에 실행하던 앱을 다시 불러올 때에 직전의 상태를 메인 메모리로부터 읽어 들여 실행 준비를 빠르게 마치기 위해서이다. 하지만 스마트폰의 메모리는 제한적이기 때문에 한번이라도 실행했던 모든 앱을 활성화된 채로 메인 메모리에 남겨두다 보면 메모리 부족 상태가 오기 쉽다. 새로운 앱을 실행시키기 위해 필요한 메모리가 부족해지면 스마트폰의 운영체제..