전체 글
-
팩토리 패턴(Factory Pattern)CS이론/디자인패턴 2023. 8. 11. 17:10
팩토리 패턴이란? 팩토리 패턴(Factory Pattern)은 GoF의 생성 패턴 중 하나로 객체 생성 부분을 떼어내 추상화한 패턴입니다. 즉, 상속 관계의 클래스에서 상위 클래스는 뼈대를 정하고 하위 클래스는 객체 생성을 결정하는 패턴입니다. 팩토리 패턴은 팩토리 메서드 패턴(Factory Method Pattern)과 추상 팩토리 패턴(Abstract Factory Pattern) 두 가지가 있습니다. 장점 객체 생성 로직이 따로 떨어져 있기 때문에 결합도를 낮출 수 있으며, 유지 보수성이 증가됩니다. 팩토리 패턴은 새로운 Product 추가 시 기존의 코드는 수정하지 않고 새로운 Product만 생성하면 되기 때문에 확장에는 열려있고, 수정에는 닫혀있는 OCP(개방 폐쇄의 원칙)을 따릅니다. 단점 ..
-
싱글톤 패턴(Singleton Pattern)CS이론/디자인패턴 2023. 8. 10. 16:59
싱글톤 패턴이란? 싱글톤 패턴(Singleton Pattern)은 GoF의 생성 패턴 중 하나로 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴입니다. 어떤 클래스가 여러 곳에서 사용될 수도 있지만 오직 하나의 인스턴스만 존재하도록 하는 것이 목적입니다. 보통 데이터베이스 연결 모듈에 많이 사용합니다. 장점 싱글톤 패턴을 통해 인스턴스를 전역적으로 접근할 수 있으며, 리소스를 공유하거나 중복 생성을 방지하여 메모리 절약을 할 수 있습니다. 단점 멀티스레드 환경에서 동기화에 주의하여야 하며, 너무 과도하게 사용하는 것은 다른 클래스의 인스턴스들 간에 결합도를 높일 수 있어 객체 지향적인 설계를 저해할 수 있습니다. 또한 TDD(Test Driven Development)를 할 때 걸림돌이 됩니다. 단위..
-
TCP 3-way HandShake & 4-way HandShakeCS이론/네트워크 2022. 12. 19. 20:05
TCP란? TCP는 Transport Layer에서 사용되는 프로토콜이다. TCP는 신뢰성이 높고 연결 지향성 서비스를 제공한다. 그러므로 정보 전달에 있어 안정적으로, 순서대로, 에러 없이 교환할 수 있도록 하는 것에 목적을 둔 프로토콜이다. 이러한 특징으로 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 handshake를 사용한다. 3-Way Handshake 는 TCP의 접속, 4-Way Handshake는 TCP의 접속 해제 과정이다. 3-Way Handshake 란? 3-Way Handshake는 데이터를 전송하기 전에 정확한 전송을 보장하기 위해 사전에 세션을 수립하는 과정이다. 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 ..
-
12015. 가장 긴 증가하는 부분 수열 2알고리즘/백준 2022. 11. 13. 22:01
https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 A..
-
16928. 뱀과 사다리 게임알고리즘/백준 2022. 11. 11. 16:32
https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 문제 뱀과 사다리 게임을 즐겨 하는 큐브러버는 어느 날 궁금한 점이 생겼다. 주사위를 조작해 내가 원하는 수가 나오게 만들 수 있다면, 최소 몇 번만에 도착점에 도착할 수 있을까? 게임은 정육면체 주사위를 사용하며, 주사위의 각 면에는 1부터 6까지 수가 하나씩 적혀있다. 게임은 크기가 10×10이고, 총 100개의 칸으로 나누어져 있는 보드판에서 진..
-
1956. 운동알고리즘/백준 2022. 10. 30. 19:59
https://www.acmicpc.net/problem/1956 1956번: 운동 첫째 줄에 V와 E가 빈칸을 사이에 두고 주어진다. (2 ≤ V ≤ 400, 0 ≤ E ≤ V(V-1)) 다음 E개의 줄에는 각각 세 개의 정수 a, b, c가 주어진다. a번 마을에서 b번 마을로 가는 거리가 c인 도로가 있다는 의 www.acmicpc.net 문제 V개의 마을와 E개의 도로로 구성되어 있는 도시가 있다. 도로는 마을과 마을 사이에 놓여 있으며, 일방 통행 도로이다. 마을에는 편의상 1번부터 V번까지 번호가 매겨져 있다고 하자. 당신은 도로를 따라 운동을 하기 위한 경로를 찾으려고 한다. 운동을 한 후에는 다시 시작점으로 돌아오는 것이 좋기 때문에, 우리는 사이클을 찾기를 원한다. 단, 당신은 운동을 매..
-
11403. 경로 찾기알고리즘/백준 2022. 10. 30. 19:47
https://www.acmicpc.net/problem/11403 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정점의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄부터 N개 줄에는 그래프의 인접 행렬이 주어진다. i번째 줄의 j번째 숫자가 1인 경우에는 i에서 j로 가는 간선이 존재한다는 뜻이고, 0인 경우는 없다는 뜻이다. i번째 줄의 i번째 숫자는 항상 0이다. 출력 ..
-