본문 바로가기

IT지식38

[Web] 디자인 패턴에 대해 공부해보자. GoF(Gang of Fours) 디자인 패턴에 대해 공부해보자. 우선 디자인 패턴은 생성, 구조, 행위로 크게 나누어 분류할 수 있다. - 생성(Creational) 패턴 : 객체 생성(인스턴스화), 특정 개체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공한다. 추상 팩토리 (Abstarct Facotry) 빌더 (Builder) 팩토리 메서드(Factory Method) 프로토타입 (Prototype) 싱글턴(Singleton) - 구조(Structural) 패턴 : 객체 결합(조합), 클래스나 객체를 조합하여 더 큰 구조를 만드는 패턴 어댑터 (Adapter) 브리지 (Bridge) 컴퍼지트 (Composite) 데커레이터 (Decorator) 퍼사드 (Facage).. 2023. 1. 1.
[알고리즘] 이분탐색 알고리즘 문제 풀이하면서 이분탐색 알고리즘이 자주 사용되는 경우가 있어서 정리해놓으려고 한다. 이분 탐색이란? 이진 탐색(이분 탐색) 알고리즘은 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법이다. 배열 내부의 데이터가 정렬되어 있어야하만 할 수 있는 알고리즘이다. 변수 3개(low, high, mid)를 사용하여 탐색한다. 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교해서 원하는 데이터를 찾는다. 이분탁샌의 구현? 탐색의 대상이 되는 자료들이 정렬되어 있어야한다. low와 high값에 의거해 중간값 mid 값은 (low + high) / 2 이다. arr[mid]값과 구하고자 하는 key값을 비교한다. : key > mid : 구하고자 하는 값이 중간값보다 높다면 l.. 2022. 12. 26.
[Web] 개발의 원칙들 : KISS, YAGNI, DRY에 대해 공부해보자 소프트웨어를 개발하기 위해서 필수로 알아야할 3가지의 원칙들이 있다고 한다. 이를 공부해보자. DRY - Don't Repeat Yourself 이란? 똑같은 일을 두번하지 않는다는 의미로 중복되는 함수나 코드는 하나의 공통의 컴포넌트에 넣고 사용한다는 의미이다. 시스템이 소규모일때는 복잡도가 크지 않기 때문에 프로그램을 이해하기가 수월한 반면 시스템이 커지고 개념도 많아지면 복잡도가 기하급수적으로 높아지게 된다. 이런 시스템에서 복잡도를 최대한 줄여야 개발 및 유지보수비용이 절감이 된다. 특정 코드를 여러번 복사하고 붙여넣기 한 경우, 같은 문제로 여러 곳을 수정해야하는 문제가 발생할 수도 있다. DRY를 위반한 것을 WET(We Enjoy Typing)이라고 한다. KISS - Keep it simp.. 2022. 12. 24.
[Web] SOLID 개발 원칙에 대해 공부해보자 정보처리기사를 공부하면서 SOLID원칙을 공부해었는데 이를 좀 더 자세히 알아보자. SOLID 원칙이란? 객체 지향 설계의 5대 원칙이라 불리는 SOLID 원칙은 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존 역전 원칙)을 말한다. 단일 책임 원칙(Single Responsibility Principle)이란? 어떤 클래스를 변경해야하는 이유는 오직 하나. 모든 클래스는 각각 하나의 책임만을 가져야 한다는 원칙이다. 즉 그 클래스는 그 책을 완전히 캡슐화해야 함을 말한다. 사칙연산 함수를 가지고 있는 계산 클래스가 있다고 하면 이 상태의 계산 클래스는 오직 사칙연산 기능만을 책임진다. 이 원칙을 만족하면 불필요한 상속 및 .. 2022. 12. 24.