[잡담] 사이드 프로젝트 0주차 회고캠퍼스 픽을 통해서 사이드 프로젝트를 진행하기 시작한지 일주일이 지났다. 다시 사이드를 진행하기까지 한 6개월이 지난거 같긴한데 퇴사와 겹치다보니 꽤 오랜 시간이 지난거 같다. 1주차에 진행한 것을 대략적으로 정리해보고자한다. 캠퍼스픽을 통하여 이미 구성되어 있던 프로젝트에 참여하게 되었다!프로젝트 협업 방향 정하기처음에는 organization의 repo를 private upstream 두고 fork해서 하는 방법을 주장했으나 같이 안드로이드 개발하는 분과 의견 조율을 통하여 upstream의 브랜치를 pull 받아서 진행하는 방식으로 진행하고 이후 Pull Request를 통하여 작업을 merge하는 방식으로 진행하기로 결정했다.깃 허브 issue 템플릿 정하기기존..
분류 전체보기
[백준 1786번] 찾기 - Kotlinhttps://www.acmicpc.net/problem/1786문제워드프로세서 등을 사용하는 도중에 찾기 기능을 이용해 본 일이 있을 것이다.이 기능을 여러분이 실제로 구현해 보도록 하자.두 개의 문자열 P와 T에 대해, 문자열 P가 문자열 T 중간에 몇 번, 어느 위치에서 나타나는지 알아내는 문제를 '문자열 매칭'이라고 한다.워드프로세서의 찾기 기능은 이 문자열 매칭 문제를 풀어주는 기능이라고 할 수 있다.이때의 P는 패턴이라고 부르고 T는 텍스트라고 부른다.편의상 T의 길이를 n, P의 길이를 m이라고 하자. 일반적으로, n ≥ m이라고 가정해도 무리가 없다.n또, T의 i번째 문자를 T[i]라고 표현하도록 하자. 그러면 물론, P의 i번째 문자는 P[i]라고..
[백준 1005번] ACM Craft - Kotlinhttps://www.acmicpc.net/problem/1005문제서기 2012년! 드디어 2년간 수많은 국민들을 기다리게 한 게임 ACM Craft (Association of Construction Manager Craft)가 발매되었다.이 게임은 지금까지 나온 게임들과는 다르게 ACM크래프트는 다이나믹한 게임 진행을 위해 건물을 짓는 순서가 정해져 있지 않다.즉, 첫 번째 게임과 두 번째 게임이 건물을 짓는 순서가 다를 수도 있다.매 게임시작 시 건물을 짓는 순서가 주어진다. 또한 모든 건물은 각각 건설을 시작하여 완성이 될 때까지 Delay가 존재한다.위의 예시를 보자.이번 게임에서는 다음과 같이 건설 순서 규칙이 주어졌다.1번 건물의 건설이 ..
[백준 14003번] 가장 긴 증가하는 부분 수열 5 - Kotlinhttps://www.acmicpc.net/problem/14003문제수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다입력첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다.둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000)출력첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다.둘째 줄에는 정답이 될 수 있는 가장..
[백준 2206번] 벽 부수고 이동하기 - Kotlinhttps://www.acmicpc.net/problem/2206문제N×M의 행렬로 표현되는 맵이 있다.맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다.당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다.최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다.만약에 이동하는 도중에 한 개의 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면, 벽을 한 개 까지 부수고 이동하여도 된다.한 칸에서 이동할 수 있는 칸은 상하좌우로 인접한 칸이다.맵이 주어졌을 때, 최단 경로를 구해 내는 프로그램을 작성하시오입력첫째..
[백준 6549번] 히스토그램에서 가장 큰 직사각형 - Kotlinhttps://www.acmicpc.net/problem/6549문제히스토그램은 직사각형 여러 개가 아래쪽으로 정렬되어 있는 도형이다.각 직사각형은 같은 너비를 가지고 있지만, 높이는 서로 다를 수도 있다.예를 들어, 왼쪽 그림은 높이가 2, 1, 4, 5, 1, 3, 3이고 너비가 1인 직사각형으로 이루어진 히스토그램이다.히스토그램에서 가장 넓이가 큰 직사각형을 구하는 프로그램을 작성하시오.입력입력은 테스트 케이스 여러 개로 이루어져 있다.각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 n이 가장 처음으로 주어진다. (1 ≤ n ≤ 100,000)그 다음 n개의 정수 h1, ..., hn (0 ≤ hi ≤ 1,000,000,0..
[백준 16236번] 아기 상어 - Kotlinhttps://www.acmicpc.net/problem/16236문제N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다.공간은 1×1 크기의 정사각형 칸으로 나누어져 있다.한 칸에는 물고기가 최대 1마리 존재한다.아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다.가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다.아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다.아기 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다.따라서, 크기가 같은 물고기는 먹을 수 없지만, 그 물고기가 있는 칸은 지나갈 수 있다.아기 상어가 어디로 이동할..
[백준 2108번] 통계학 - Kotlinhttps://www.acmicpc.net/problem/2108문제수를 처리하는 것은 통계학에서 상당히 중요한 일이다.통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다.단, N은 홀수라고 가정하자.산술평균 : N개의 수들의 합을 N으로 나눈 값중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값최빈값 : N개의 수들 중 가장 많이 나타나는 값범위 : N개의 수들 중 최댓값과 최솟값의 차이N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오입력첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다.단, N은 홀수이다.그 다음 N개의 줄에는 정수들이 주어진다.입력되는 정수의 절댓값은..
[백준 14501번] 퇴사 - Kotlinhttps://www.acmicpc.net/problem/14501문제상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다.오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다.백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다.각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다.N = 7인 경우에 다음과 같은 상담 일정표를 보자. 1일2일3일4일5일6일7일Ti3511242Pi102010201540200 1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다.5일에 잡혀..
[백준 1927번] 최소 힙 - Kotlinhttps://www.acmicpc.net/problem/1927문제널리 잘 알려진 자료구조 중 최소 힙이 있다.최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.배열에 자연수 x를 넣는다.배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다.프로그램은 처음에 비어있는 배열에서 시작하게 된다입력첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다.다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다.만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 가장 작은 값을 출력하고 그 값을 배열에서 제거하는 경우이다.x는 231보다 작은 자연수 또는 0이고, 음의 정수는 입..