☁️정리 38

[Algorithm] 플로이드-워셜

❓ 플로이드-워셜이란?음수 사이클이 없는 그래프에서 모든 노드 간에 최단 거리를 구하는 알고리즘  ❓ 플로이드-워셜import java.io.*;import java.util.*;public class Main { // 플로이드 public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st; int n = Integer.parseInt(bf.readLine..

[Algorithm] LCS (Longest Common Subsequence, 최장 공통 부분 수열)

❓ LCS 란?여러 개의 수열 모두의 부분 수열이 되는 수열들 중에 가장 긴 것  ❓ LCS 예를 들어 ABCDE와 ACBDE의 LCS를 찾는다고 가정해 보자 현재 위치가 (x, y)이고1) 문자가 같다면 (x-1, y-1) +1을 저장한다.2) 문자가 같지 않다면 (x-1, y)와 (x, y-1) 값 중에서 큰 값으로 저장한다. 배열의 마지막 값이 LCS의 길이가 된다.LCS를 찾기 위해서는 배열의 가장 오른쪽 아래부터 탐색을 시작한다. if) 현재 값과 위의 값이 같다면 위로 이동else if) 현재 값과 왼쪽 값이 같다면 왼쪽으로 이동else) 현재 값을 LCS값으로 저장 후 왼쪽 위 대각선으로 이동 ❓ LCS 코드public class Main { // LCS public static void m..

[CS] TCP/IP 4계층

💡TCP/IP 4 계층애플리케이션 계층전송 계층인터넷 계층링크 계층 💡애플리케이션 계층응용 프로그램(FTP, HTTP, DNS, SSH 등)이 사용되는 프로토콜 계층서비스를 실질적으로 사람들에게 제공 💡전송 계층송신자와 수진자를 연결하는 통신 서비스 제공연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어 제공데이터 전달될 때 중계 역할 TCP : 패킷 사이 순서 보장 '가상회선 패킷 교환 방식'UDP : 패킷 사이 순서 보장 x '데이터그램 패킷 교환 방식' 💡인터넷 계층장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지까지 전송하기 위해 사용비연결형 IP, ARP, ICMP 💡링크 계층실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 규칙을 정하는 계층 전선, 광섬유, 무선

[CS] Network Topology

💡Network Topology노드, 링크 배치 방식 💡Tree Topology계층형 토폴로지트리 형태로 배치 노드 추가, 삭제 쉬움특정 노드에 트래픽이 집중될 때 하위 노드에 영향 끼칠 수 있음 💡Bus Topology중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성근거리 통신망(LAN)에서 사용 설치 비용이 적음신뢰성이 우수노드 추가, 삭제 쉬움스푸핑 가능 문제💡Star Topology중앙에 있는 노드에 모두 연결된 네트워크 구성 노드 추가, 에러 탐지 쉬움패킷 충돌 발생 적음중앙 노드에 장애가 발생하면 전체 사용 불가 💡Ring Topology각각의 노드가 양 옆의 두 노드와 연결하여 고리처럼 하나의 연속된 길을 통해 통신하는 망 구성 노드 수 증가 시 네트워크 손실..

[CS] 프로그래밍 패러다임

💡프로그래밍 패러다임선언형과 명령형으로 나뉨 선언형 : 함수형명령형 : 객체지향, 절차지향 💡선언형: 함수형 프로그래밍'무엇을'순수 함수들을 쌓아 로직을 구현하고 고차 함수를 통해 재사용성을 높인 프로그래밍 패러다임 💡명령형: 객체지향 프로그래밍객체들의 집합프로그램의 상호 작용을 표현 특징1) 추상화2) 캡슐화3) 상속성4) 다형성 설계 원칙1) 단일 책임 원칙 (S)2) 개방-폐쇄 원칙 (O)3) 리스코드 치환 원칙 (L)4) 인터페이스 분리 원칙 (I)5) 의존 역전 원칙 (D) 💡명령형: 절차형 프로그래밍로직이 수행되어야 할 연속적인 계산 과정으로 이루어짐

[CS] MVC 패턴

💡MVC 패턴이란?모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴 💡장점재사용성, 확장성이 용이 💡단점애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해짐 💡모델(Modle)애플리케이션의 데이터인 데이터베이스, 상수, 변수뷰에서 데이터를 생성하거나 수정하면 컨트롤러를 통해 모델을 생성하거나 갱신 💡뷰(View)사용자 인터페이스 요소 (모델을 기반으로 사용자가 볼 수 있는 화면) 💡컨트롤러(Controller)메인 로직 담당하나 이상의 모델과 하나 이상의 뷰를 잇는 다리 역할 (모델, 뷰의 변경을 해석하여 각각의 구성 요소에 알려줌)모델과 뷰의 생명주기 관리 💡MVC 패턴 예시스프링(spring): 어노테이션을 기반으로 사용자의 요청 값을 쉽게 분석 ..

[CS] 디자인 패턴_행위패턴

💡행위 패턴이란?클래스나 객체의 책임 분배 방법과 관련된 패턴 💡행위 패턴 특징하나의 객체로 수행할 수 없는 것을 여러 객체로 분배하여 결합도 최소화 💡행위 패턴 종류Chain-of-ResponsibilityCommandInterpreterIteratorMediatorMementoObserverStateStrategyTemplate MethodVisitor 💡Chain-of-Responsibility 패턴정의 : 사슬 방식으로 연결된 객체가 요청이 들어오면 그 요청을 수행하지 못하는 객체라면 다음 객체에 넘김ex) JAVA의 try catch문 장점: 내부 구조를 알 필요 없음: 코드를 변경하지 않고 핸들러를 chain에 동적으로 추가하거나 처리 순서를 변경하거나 삭제 가능 (유연성) 단점: 디버..

[CS] 디자인 패턴_구조패턴

💡구조 패턴이란?구조 패턴이란 클래스나 객체를 더 큰 구조를 만드는 패턴 💡구조 패턴 특징서로 독립적으로 개발한 클래스 라이브러리를 하나인 것처럼 사용 가능인터페이스나 구현을 복합하는 것이 아니라 객체를 합성하는 방법 제공 💡구조 패턴 종류AdapterBridgeCompositeDecoratorFacadeFlyweightProxy 💡Adapter 패턴정의 : 그대로 사용할 수 없는 것을 필요한 형태로 변환하여 사용하는 패턴 장점: 클래스 재활용성 증가 단점: 클래스를 재활용할 때 추가 코드가 필요하여 복잡도가 증가하고 속도 저하💡Bridge 패턴정의 : 추상적인 부분과 구체적인 부분을 나눠 구현하는 패턴 장점: 독립적으로 확장 가능: 추상적인 부분과 구체적인 부분 분리 가능 단점: 복잡도 증가 ..

[CS] 디자인 패턴_생성패턴

💡생성 패턴이란?생성 패턴이란 객체를 만드는 절차를 추상화하는 패턴 💡생성 패턴 특징시스템이 어떤 구체적인 클래스를 사용하는지에 대한 정보를 캡슐화특정 객체가 생성되거나 변경되어도 프로그램 구조에 크게 영향을 받지 않음 (유연성) 💡생성 패턴 종류SingletonPrototypeFactory MethodsBuilderAbstract Factory 💡Singleton 패턴정의 : 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴으로 보통 데이트베이스 연결 모듈에 많이 사용함: 하나의 인스턴스를 만들어 놓고 해당 객체를 다른 모듈들이 공유하면서 사용 장점: 인스턴스를 생성할 때 드는 비용이 줄어듦 단점: 의존성이 높아짐 의존성 주입: 의존성 낮추는 방법으로 메인 모듈과 다른 하위 모듈 사이에 의존성..

[CS] 디자인 패턴

💡디자인 패턴이란?프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것 💡디자인 패턴의 종류생성 패턴: Singleton, Prototype, Factory Methods, Builder, Abstract Factory 구조 패턴: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy 행위 패턴: Chain-of-Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor