
DeadLock 이란? 운영체제에서 데드락이란, 시스템 자원에 대한 요구가 뒤엉킨 상태를 뜻한다. 즉 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 일컫는다. 예를 들어 위와 같은 상황을 가정해보자. 현재 컴퓨터 시스템은 위와 같이 두 개의 프로세스 A, B 를 실행 중이다. 프로세스 A는 자원 A 를 사용해 작업 A 를 진행 중이다. 프로세스 B는 자원 B 를 사용해 작업 B 를 진행 중이다. 프로세스는 다음 작업을 시작해야 현재 사용하고 있는 자원의 점유를 해제한다고 가정해보자. 그렇다면 작업 A 와 작업 B 는 서로가 점유하고 있는 자원을 얻을 때 까지 자기 자신의 자원 점유를 해제하지 못하므로, 두 개의 프로세스 모두 다음 작업을 진행하지 못..

목차 목차 깊이 우선 탐색이란? DFS 의 구현 방법 - 재귀 호출을 이용한 구현 DFS의 구현 방법 - 스택을 이용한 구현 DFS 를 활용한 사이클 탐색 방법 DFS 는 해당 시작 정점에서 갈 수 있는 모든 정점을 깊이 우선으로 방문한 뒤 종료된다! DFS 를 이용한 유향 그래프 사이클 탐색 문제 추천 깊이 우선 탐색이란? Depth First Search, 흔히 줄여서 DFS 라고 부른다. 트리 나 그래프 에서 한 루트로 탐색하다가 최대한 깊숙히 탐색한 뒤 다시 돌아가 다른 루트를 탐색하는 방법이다. 대표적으로 백트래킹에 사용한다. 일반적으로 두 가지의 구현 방법이 있는데, Stack 을 이용한 구현 방법과 재귀호출을 사용한 구현 방법이다. DFS 의 구현 방법 - 재귀 호출을 이용한 구현 //재귀 ..
목차목차소개사전지식배울 것들사용할 것들해볼 것들테스팅 전략 컨셉Architecture 와 Testing 의 상관관계Fake Data source 만들기Test Double 활용하기step 1. FakeDataSource Class 만들기step 2. TasksDataSource Interface 구현하기Step 3. FakeDataSource 에 getTasks 함수 구현하기의존성 주입을 사용해 테스트 작성하기step 1. 생성자 의존성 주입을 이용하도록 DefaultTasksRepository 수정하기step 2. FakeDataSource 를 테스트에 활용하기step 3. DefualtTasksRepository getTasks() 테스트하기step 4. add runBlockingTestFake R..

이 글은 https://developer.android.com/codelabs/advanced-android-kotlin-training-testing-basics#4 예제를 보고 따라하면서 작성한 글입니다. TDD - 안드로이드 예제와 함께 TDD 를 배워보자! 작성일자: 2021년 12월 26일 오후 10:42 작성자: HoJong 목차 TDD - Test Driven Development 그림1. 기존의 개발 프로세스 그림2. TDD 프로세스 TDD란 Test Driven Development의 약자로, ‘테스트 주도 개발’ 이라고 명합니다. 기존의 개발 프로세스가 디자인 → 개발 → 테스트 순서였다면, TDD 는 개발에 앞서 테스트케이스를 작성하는 프로세스를 가집니다. 즉 테스트 코드를 미리 작성..
문제 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다. 따라서, 크기가 같은 물고기는 먹을 수 없지만, 그 물고기가 있는 칸은 지나갈 수 있다. 아기 상어가 어디로 이동할지 결정하는 방법은 아래와 같다. 더 이상 먹을 수 있는 물고기가 공간에 없다면 아기 상어는 엄마..
문제 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. 예를 들면, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7이다. 10000보다 작거나 같은 모든 짝수 n에 대한 골드바흐 파티션은 존재한다. 2보다 큰 짝수..
문제 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. 입력 첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다. 출력 첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다. 예제 입력 예제 출력 ACAYKP CAPCAK 4 해결 방법 문자열에서 가능한 수열을 모두 만들어 비교하는 방법은 O($2^n$*$2^m$) 으로 매우 느리다. 예제 입력을 이용해 DP라는 2차원 배열을 생성해보자. A C A Y K P C 0 1 1 1 1 1..
Comment