728x90
반응형

CS/Algorithm 8

📌 의존성 주입(DI - Dependency Injection) 자세히 설명 🚀

📌 의존성 주입(DI - Dependency Injection) 자세히 설명 🚀의존성 주입(DI)은 객체 간의 의존성을 직접 생성하는 것이 아니라, 외부에서 주입하는 설계 패턴이다.이를 통해 객체 간의 결합도를 낮추고 유지보수성을 높일 수 있다.1. DI(Dependency Injection)의 핵심 개념개념 설명의존성(Dependency)하나의 클래스가 다른 클래스의 기능을 사용할 때, 이 두 클래스 간의 관계를 "의존성"이라고 함의존성 직접 생성 (Bad Practice)클래스 내부에서 new Class()로 객체를 직접 생성하는 방식. 유지보수 어려움의존성 주입 (Best Practice)클래스 내부에서 직접 객체를 생성하지 않고, 외부에서 주입받는 방식결합도(Coupling) 감소DI를 사용하..

CS/Algorithm 2025.02.03

📌 디자인 패턴 (Design Patterns) – TypeScript로 상세 정리

📌 디자인 패턴 (Design Patterns) – TypeScript로 상세 정리디자인 패턴은 자주 발생하는 소프트웨어 설계 문제를 해결하기 위한 일반적인 해결책이다.유지보수성과 확장성이 뛰어난 코드를 작성하는 데 도움을 준다.1. 디자인 패턴 개요디자인 패턴은 3가지 주요 유형으로 분류된다.패턴 유형 설명 대표 패턴생성(Creational) 패턴객체 생성 방법을 최적화Singleton, Factory, Builder구조(Structural) 패턴클래스나 객체의 구조를 조정하여 효율적인 설계 제공Adapter, Decorator, Facade행동(Behavioral) 패턴객체 간의 상호작용을 최적화Observer, Strategy, Command2. 생성(Creational) 패턴객체를 효율적으로 생..

CS/Algorithm 2025.02.02

📌 SOLID 원칙 – 객체지향 프로그래밍의 핵심 설계 원칙

📌 SOLID 원칙 – 객체지향 프로그래밍의 핵심 설계 원칙SOLID 원칙은 유지보수성과 확장성을 높이기 위해 객체지향 프로그래밍(OOP)에서 필수적으로 고려해야 하는 5가지 설계 원칙이다.이를 준수하면 유연하고 확장 가능하며, 결합도가 낮은 코드를 작성할 수 있다.1. SOLID 원칙 개요원칙 설명 해결하는 문제Single Responsibility Principle (SRP)하나의 클래스는 하나의 책임(기능)만 가져야 한다.클래스가 너무 많은 역할을 할 경우 유지보수 어려움Open/Closed Principle (OCP)기존 코드를 수정하지 않고 기능을 확장할 수 있어야 한다.새로운 기능 추가 시 기존 코드 변경으로 인한 버그 발생Liskov Substitution Principle (LSP)자식 ..

CS/Algorithm 2025.02.02

📌 객체지향 프로그래밍(OOP) - TypeScript로 자세히 정리

📌 객체지향 프로그래밍(OOP) - TypeScript로 자세히 정리객체(Object)를 중심으로 설계하는 프로그래밍 패러다임으로, 캡슐화, 상속, 다형성, 추상화를 기반으로 함.코드의 재사용성과 유지보수성을 높이는 핵심 개념.1. OOP의 4대 원칙객체지향 프로그래밍(OOP)의 핵심 개념은 다음과 같습니다.원칙 설명캡슐화 (Encapsulation)데이터를 외부에서 직접 접근하지 못하게 하고, 메서드를 통해 조작상속 (Inheritance)부모 클래스의 속성과 메서드를 자식 클래스가 재사용다형성 (Polymorphism)같은 인터페이스/부모 클래스를 공유하는 객체들이 서로 다른 동작을 할 수 있도록 함추상화 (Abstraction)불필요한 세부사항을 숨기고, 중요한 부분만 노출2. 캡슐화 (Encap..

CS/Algorithm 2025.02.02

📌 객체지향 프로그래밍(OOP), SOLID 원칙, 디자인 패턴, DI - TypeScript 예제 포함 상세 설명

1. 객체지향 프로그래밍 (OOP)객체(Object)를 중심으로 설계하는 프로그래밍 패러다임으로, 캡슐화, 상속, 다형성, 추상화를 기반으로 함.1.1 OOP의 4대 원칙원칙설명TypeScript 적용캡슐화 (Encapsulation)데이터를 외부에서 직접 접근하지 못하게 하고, 메서드를 통해 조작private 또는 protected 키워드 사용상속 (Inheritance)부모 클래스의 속성과 메서드를 자식 클래스가 재사용extends 키워드 사용다형성 (Polymorphism)같은 인터페이스/부모 클래스를 공유하는 객체들이 서로 다른 동작을 할 수 있도록 함interface 또는 abstract class 활용추상화 (Abstraction)불필요한 세부사항을 숨기고, 중요한 부분만 노출abstract ..

CS/Algorithm 2025.02.02

[CS] Typescript를 활용한 자료구조 중 Array, LinkedList

목차1. Array 중 IndexOf, LastIndexOf 구현.2. LinkedList 구현 중 SinglyLinkedList, DoublyLinkedList하면서 모르는 점Jest를 사용하는 방법 정리Bable를 사용하는 방법 정리JS, TS의 TDD 방식throw를 이용한 디버깅 방식제네릭Interaction protocol(반복자 프로토콜)Iteralble protocol(순회 가능 프로토콜)1. Jest를 사용하는 방법Jest는 JavaScript 및 TypeScript를 위한 테스팅 프레임워크로, 유닛 테스트와 통합 테스트를 쉽게 작성하고 실행할 수 있습니다.2. Babel을 사용하는 방법Babel은 최신 JavaScript 및 TypeScript 코드를 구형 브라우저에서도 동작 가능하도록 ..

CS/Algorithm 2024.12.19

[Algorithm] python - 경우의 수 문제 모음 및 필요 파이썬 문법 정리

문제 1: 중복 제거 후 고유 정수 개수 구하기 문제 설명정수 N개가 주어진다. 이때, 정수 중에서 중복되는 값을 제거한 뒤 남은 고유 정수의 개수를 출력하시오. 입력 조건첫째 줄에 주어지는 정수의 개수 N이 주어진다.둘째 줄에 N개의 정수 v_1, v_2, ..., v_N이 공백으로 구분되어 주어진다.(1 ≤ N ≤ 10,000), (-10,000 ≤ v_i 출력 조건중복값을 제외한 고유 정수의 개수를 출력한다. 입력 예시53 -3 2 1 1 출력 예시4 코드def unique\_count(): try: _\# 첫 번째 줄에서 정수의 개수 N을 입력받음_ N = int(input("Enter the number of integers (N): ").strip()) ..

CS/Algorithm 2024.11.26

2021 카카오 채용연계형 인턴십 '거리두기 확인하기' Java

Java 코드public class Solution { private static final int ROOM_SIZE = 5; // 각 대기실의 크기(5x5) public int[] solution(String[][] places) { int[] result = new int[ROOM_SIZE]; // 각 대기실의 거리두기 준수 여부 결과를 저장할 배열 for (int i = 0; i = 0 && x = 0 && y 문제 접근 방식.맨해튼 거리를 1, 2로 나누어 생각할 때, 1일때는 조건이 하나, 2일때도 예외 조건이 하나라고 생각했다.결론적으론 5x5 배열을 한번 조회할 때 결과가 true이냐 false이냐인 문제이다.그러면 조회를 할 때 첫번째 조건을 걸어야한다...

CS/Algorithm 2024.11.12