Clean Architecture: Architecture
소프트웨어 시스템의 아키텍처는 그 속의 소프트웨어 시스템이 쉽게 개발, 배포, 운영, 유지보수되도록 만들어져야 한다. 이러한 일을 용이하게 만들기 위해서는 가능한 한 많은 선택지를 가능한 한 오래 남겨두는 전략을 따라야 한다. 시스템 아키텍처는 동작 여부와는 관련이 거의 없고, 배포, 유지보수, 계속되는 개발 과정에 영향을 준다. 즉, 쉽게 이해하고, 쉽게 개발하며, 쉽게 유지보수하고, 쉽게 배포하게 해주는 역할을 하며, 궁극적으로 시스템의 수명과 관련된 비용을 최소화하고 프로그래머의 생산성을 최대화하는 것이다. 개발 시스템 아키텍처는 개발팀이 시스템을 쉽게 개발할 수 있도록 뒷받침해야 한다. 팀 구조가 다르면 아키텍처 관련 결정에서도 차이가 난다. 여러 팀이 시스템을 개발하고 있을 때, 다른 요소를 고..
[Alg] Daily LeetCoding Challenge 22.03.03: 413 Arithmetic Slices
문제: https://leetcode.com/problems/arithmetic-slices/ 입력 배열에서 arithmetic 부분배열을 출력하는 문제! arithmetic이 되기 위해서는 적어도 3개의 원소가 들어가야 하고, 연속되는 두 개의 원소의 차가 2여야 한다. nums가 [1, 2, 3, 4, 5] 라고 가정해보자. 만들 수 있는 arithmetic은 [1, 2, 3], [2, 3, 4], [3, 4, 5], [1, 2, 3, 4], [1, 2, 3, 4, 5], [2, 3, 4, 5] 로 총 6개가 된다. 여기서의 규칙은 먼저 [1, 2, 3]과 [2, 3, 4]가 만들어지면, [1, 2, 3, 4]도 만들 수 있다는 것이다. 더군다나 [3, 4, 5]까지 만들 수 있다면, [2, 3, 4..