본문 바로가기

CS20

[알고리즘] Introduction to Algorithms 1장 알고리즘에 대한 나의 생각먼저 검색을 해보면 문제를 해결하기 위한 일련의 단계적 절차나 방법을 의미한다고 한다.컴퓨터 분야에서의 알고리즘은 입력 -> 처리 -> 출력의 일련의 논리적 동작 과정을 명확히 정의한 것이라고 한다.일상 속 알고리즘을 생각해보면 라면 끊이기 정도가 있을 것 같다.1. 물 550ml 냄비에 넣기2. 물 끓이기3. 면과 스프 넣기4. 3~4분 끊이기5. 완성1.1 알고리즘책에서는 알고리즘은 입력을 받아 다른 값이나 값의 집합을 출력하는 잘 정의된 계산 절차를 말한다.알고리즘은 어떤 입력을 어떤 출력으로 변환하는 일련의 계산 과정이라 기술 되어 있다.알고리즘은 잘 정의된 문제를 풀기 위한 도구로도 볼 수 있다. 일반적으로 계산 문제를 정의하려면 입출력 관계를 잘 서술해야 한다고 한다... 2025. 7. 7.
[알고리즘] Introduction to Algorithms 책을 시작하며.. 배경개발을 하다 보면 항상 마주치는 질문이 있다. 이 코드가 정말 효율적인지? 더 나은 방법은 없을지?처음에는 단순히 동작하는 코드를 작성했다면, 프로젝트가 커지고, 데이터가 많아지면서 성능 문제에 부딪히기 시작한다.실무에서는 겪어본적은 없지만, 간단한 반복문 하나가 전체 애플리케이션을 느리게 만드는 경우가 있다.이를 개선하여 좀 더 좋은 품질의 코드를 짜는 개발자가 되고싶다.계기비전공자로서 학부생 때 배우는 기초적인 알고리즘도 모르고 있었고 현재, 이두희 CTO님이 용병으로 합류하시면서 미션을 주시면서 제안을 받아 이 책을 구매하고 공부하게 되었다.이 책을 선택한 이유1. 컴퓨터 과학의 바이블이라 불리는 책2. 수학적 증명과 실용적 구현을 균형있게 다룬다고 한다.3. 단순한 암기가 아닌 원리 이해에 중.. 2025. 7. 7.
테스트 주도 개발(TDD)란? TDD(Test Driven Development) 반복 테스트를 이용한 소프트웨어 방법론으로 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다. 짧은 개발 주기의 반복에 의존하는 개발 프로세스이며, 애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First’개념에 기반을 둔 단순한 설계를 중요시한다. 이 기법을 개발했거나 '재발견’한 것으로 인정되는 Kent Beck(켄트 벡)은 2003년 TDD가 단순한 설계를 장려하고 자신감을 불어넣어 준다고 말하였다. eXtream Programming(XP)란? 익스트림 프로그래밍 미래에 대한 예측을 최대한 하지 않고 지속적으로 프로토타입을 완성하는 애자일 기방법론 중 하나이다. 이 방법.. 2023. 11. 13.
헥사고날 아키텍처(Hexagonal Architecture)란 헥사고날 아키텍처란 자료 출처 Hexagonal은 사전적 의미로 '육각형 건축물’을 의미한다. 소프트웨어 설계에 사용되는 아키텍처 패턴중 하나로 여러 소프트웨어 환경에 쉽게 연결할 수 있도록, MSA와 같이 느슨하게 결합된 애플리케이션 구성요소를 만드는 것을 목표로 하는 아키텍처이다. 도메인의 비즈니스 로직을 외부 라이브러리 및 툴로부터 분리 할 때 포트와 어댑터로 사용하기 때문에 포트&어댑터 아키텍처라고도 부른다. (막상 6각형 네이밍보다는 포트&어댑터 아키텍처가 조금 더 맞는 표현이라 생각한다.) 헥사고날 핵심 도메인 비즈니스 로직이 외부요소에 의존하지 않게 만들고, 프레젠테이션 계층(controller)과 데이터 소스 계층(persistence) 같은 외부 요소들이 도메인 계층에 의존하도록 한다. .. 2023. 10. 28.