본문 바로가기

데일리IT🌱19

[ 최단경로 알고리즘 ] 다익스트라 & 플로이드 워셜 오늘은 최근 다시 공부한 다익스트라 알고리즘과 플로이드 워셜 알고리즘을 정리해보려합니다. 정리해놓지 않고..오랜만에 보니 헷갈리는 부분들이 생겨 오늘은 꼭 정리하고 넘어가고자 합니다. 먼저 다익스트라 알고리즘입니다. 다익스트라 알고리즘은 특정 노드에서 다른 모든 노드로 가는 최단 경로를 구할 수 있는 알고리즘입니다. * 단 음수의 가중치를 가지는 간선이 포함된 경우에는 구할 수 없습니다 * 다익스트라 알고리즘이 다이나믹 프로그래밍 문제인 이유는 최단 거리는 여러 개의 최단 거리로 이루어져 있기 때문입니다. 기본적인 다익스트라 알고리즘의 원리는 하나의 최단 거리를 구할 때 그 이전까지 구했던 최단 거리 정보를 그대로 사용한다는 것 입니다. 다익스트라 알고리즘의 동작 원리는 다음과 같습니다. 1. 출발 노드.. 2023. 1. 15.
디자인 패턴 ( 팩토리 & 전략 & 옵저버 ) ** 이 글은 ' 면접을 위한 cs 전공지식 노트 ' 책을 기반으로 정리한 글 입니다 ** 🙋🏻‍♀️ 팩토리 패턴 - 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴 - 상속관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정 & 하위 클래스가 객체 생성에 관한 구체적 내용 결정 /* Online Java Compiler and Editor */ abstract class Coffee{ /*상위 추상 클래스*/ public abstract int getPrice(); @Override public String toString(){ return "Hi this coffee is " + this.getPrice(); } } class CoffeeFactory{ /* 객체 생성 클래스 .. 2023. 1. 13.
디자인 패턴과 프로그래밍 패러다임_싱글톤 패턴 ** 이 글은 ' 면접을 위한 cs 전공지식 노트 ' 책을 기반으로 정리한 글 입니다 ** 🙋🏻‍♀️ 디자인 패턴 - 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것! 🎯 싱글톤 패턴 - 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 - 하나의 클래스를 기반으로 여러 개의 개별적 인스턴스 생성이 가능하지만, 그렇게 하지 않고 하나의 클래스 기반 하나의 인스턴스만 만드는 패턴 - 데이터베이스 연결 모듈에 가장 많이 사용 class Singleton{ private static class singleInstanceHolder{ private static final Singleton INSTANCE = new Singlet.. 2023. 1. 4.
오브젝트 _ 코드로 이해하는 객체지향 설계( 3장 ) ** 본 글은 오브젝트(조영호) 책을 읽고 작성자가 정리한 글입니다. ** 3장 : 역할, 책임 협력 🙋🏻‍♀️ 객체 지향의 본질 - 협력하는 객체들의 공동체를 창조하는 것 1.협력 ( 영화 예매 시스템 참조 ) ✅ - 애플리케이션의 제어 흐름은 어떤 하나의 객체에 의해 통제되지 않고 다양한 객체들 사이에 균형 있게 분배되는 것이 일반적 - 메시지 전송은 객체 사이의 협력을 위해 사용할 수 있는 유일한 커뮤니케이션 수단 더보기 메시지 전송 : 하나의 객체는 메시지를 전송함으로써 다른 객체에 접근한다. 메시지는 메시지 이름과 인자의 두 부분으로 구성된다. EX. 증언하라(어제, 왕국) 메시지 전송은 수신자와 메시지의 조합이다. 메시지는 메시지 이름과 인자의 조합이므로 메시지 전송은 수신자, 메시지 이름, .. 2022. 12. 9.
오브젝트 _ 코드로 이해하는 객체지향 설계( 1&2장 ) ** 본 글은 오브젝트(조영호) 책을 읽고 작성자가 정리한 글입니다. ** 로버트 마틴이 강조하는 소프트웨어 모듈이 가져야하는 3가지 기능 ✅ 1. 모듈은 정상적으로 실행되어야 한다. 2. 변경에 용이해야 한다. 3. 이해하기 쉬워야 한다. 객체 지향 설계를 위해 고려할 것 ✅ - 객체 내부는 캡슐화하고 객체 간에 오직 메시지를 통해서만 상호작용 하도록 한다. - 각 객체가 자율적 존재가 되도록 설계! ( 의존성과 결합성을 낮추자 ) = 책임의 이동 영화 시스템 요구사항 분석🎯 영화 : 영화에 대한 기본정보를 표현 상영 : 실제로 관객들이 영화를 관람하는 사건 (상영 일자, 시간 순번 등 ) ** 사용자가 실제로 예매하는 대상은 영화가 아니라 상영 ** ** 특정한 조건을 만족하는 예매자는 요금을 할인 .. 2022. 12. 3.
TDD ( Test- Driven - Development ) 에 대하여 TDD란 ?! 테스트 주도 개발 TDD는 설계 이후 코드 개발 및 테스트케이스를 작성하는 기존 개발 프로세스와 다르게 테스트케이스 작성 후 실제 코드를 개발하여 리펙트링 하는 절차를 말한다. ( = Test First Development ) 짧은 개발 주기의 반복에 의존하는 개발 프로세스이며 애자일 방법론 중 하나인 eXtream Programming ( XP )의 test first 개념에 기반한 방법이다. TDD가 필요한 이유? 1. 깔끔한 코드를 작성할 수 있다. ( 중요! ) 2. 장기적으로 개발 비용을 절감할 수 있다. 3. 개발 후 테스트코드를 작성하는 것이 매우 힘들고 귀찮다. TDD 개발 단계에는 리팩토링이 있는데 이 과정을 통해 중복된 코드들은 제거되고 복잡한 코드들이 정리된다. 프로덕.. 2022. 10. 20.