[Design Pattern] 옵저버 패턴(Observer Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다. 2. 객체들에게 연락 돌리기옵저버 패턴 옵저버 패턴(Observer Pattern)은 객체들 사이에서 일대다(one-to-many) 관계를 정의해서 하나의 객체의 상태가 변할 때 모든 의존성 있는 객체들에게 자동으로 통지하고 업데이트하는 패턴이다. 신문사(Publisher)와 구독자(Subscriber)로 이루어지는 신문 구독 서비스를 떠올리면 이해하기 쉽다. 디자인 원칙애플리케이션에서 달라지는 부분을 식별하고 불변으로부터 그것들을 분리해라. (Identify the aspects of your application that vary and separate them from what stays the same.)달라지는 부분을 찾아서 나머지..
[Design Pattern] 전략 패턴(Strategy Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다. 1. 디자인 패턴 소개와 전략 패턴 자바의 인터페이스는 구현된 코드(Body)가 없으므로 코드를 재사용할 수 없는 문제점이 존재한다. 즉, 한 가지 행동을 바꿀 때마다 그 행동이 정의되어 있는 서로 다른 서브 클래스들을 모두 찾아서 코드를 일일히 수정해야 하는 번거로움이 존재한다. 이 문제를 해결하기 위해 전략 패턴(Strategy Pattern)을 사용할 수 있다. 디자인 원칙애플리케이션에서 달라지는 부분을 식별하고 불변으로부터 그것들을 분리해라. (Identify the aspects of your application that vary and separate them from what stays the same.)달라지는 부분을 찾아서..
[Network] 컴퓨터 네트워크와 인터넷
·
Computer Science/Network
컴퓨터 네트워킹 : 하향식 접근(제 7판)을 읽고 정리한 내용입니다. 1.1 인터넷이란 무엇인가?1.1.1 구성요소로 본 인터넷호스트(Hosts) = 종단 시스템(End systems)- 호스트는 때때로 클라이언트(client)와 서버(server)로 구분된다.- 컴퓨팅 장치(computing devices)에 연결된 수많은 것을 말한다. (데스크톱, 리눅스 워크스테이션 등의 서버와 랩톱, 스마트폰 등의 비 전통적인 인터넷 사물들이 포함된다.)- 통신 링크(communication links)와 패킷 스위치(packet switch)의 네트워크로 연결된다. 통신 링크(Communication Links)- 동축케이블, 구리선(copper), 광케이블(fiber), 라디오 스펙트럼(radio)을 포함한 다..
백준 2589 보물섬(JAVA)
·
PS(Problem Solving)/JAVA
문제 설명https://www.acmicpc.net/problem/2589 풀이과정 최단거리이므로 BFS를 이용해서 풀이했다. visited 배열에 거리의 값을 더해가면서 계산한다. 정답코드import java.io.*;import java.util.*;public class Main { static int N, M; static int[][] board; static int[] dy = {-1, 1, 0, 0}; static int[] dx = {0, 0, -1, 1}; static int[][] visited; static int result = 0; public static void main(String[] args) throws IOException { ..
백준 15686 치킨 배달(JAVA)
·
PS(Problem Solving)/JAVA
문제 설명https://www.acmicpc.net/problem/15686 풀이과정 전형적인 백트래킹으로 풀 수 있는 문제이다. 치킨집 M개를 선택해서 visited 배열에 저장하고 거리를 구한 후 원복시켜서 구현했다. 정답코드import java.io.*;import java.util.*;public class Main { static int N, M; static int[][] board; static List house = new ArrayList(); static List chicken = new ArrayList(); static boolean[] visited; static int result = Integer.MAX_VALUE; public static..
백준 17298 오큰수(JAVA)
·
PS(Problem Solving)/JAVA
문제 설명https://www.acmicpc.net/problem/17298 풀이과정 배열과 스택을 이용해서 풀이한다. 정답코드import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int N = Integer.parseInt(br.readLine(..
백준 1068 트리(JAVA)
·
PS(Problem Solving)/JAVA
문제 설명https://www.acmicpc.net/problem/1068 풀이과정 List 배열을 이용해서 tree 정보를 저장했다. 그리고 DFS를 통해서 리프 노드의 개수를 더해주도록 풀이했다. 정답코드import java.io.*;import java.util.*;public class Main { static int N; static List[] tree; static int root, remove; static int result = 0; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(S..
백준 2636 치즈(JAVA)
·
PS(Problem Solving)/JAVA
문제 설명https://www.acmicpc.net/problem/2636 풀이과정 DFS를 이용해서 풀이했다. 정답코드import java.io.*;import java.util.*;public class Main { static int[] dy = {-1, 1, 0, 0}; static int[] dx = {0, 0, -1, 1}; static int N, M; static int[][] board; static boolean[][] visited; static int cheeseCnt = 0; public static void main(String[] args) throws IOException { BufferedReader br = new Buff..