전체 글 199

Kruskal MST Algorithm (크루스칼 알고리즘)

먼저 알아야 하는 것 : MST, Union-Find Union-Find Algorithm 이걸 카테고리를 알고리즘으로 해야하는지... 자료구조로 해야하는지... * Union-Find (= disjoint-set / merge-find) 알고리즘 Union-Find 알고리즘은 2개의 기능을 가지고 있는 알고리즘이다. 1. Find : 어느 부.. superbono-2020.tistory.com * Kruskal 정의 간선을 하나씩 선택해서 MST를 찾는 알고리즘. 그리디 알고리즘의 한 종류이다. 간선 리스트를 작성한다. 최초, 모든 간선을 가중치에 따라 오름차순으로 정렬한다. 가중치가 가장 낮은 간선부터 선택(두 정점을 해당 가중치의 비용으로 연결한다)하면서 트리를 증가시킨다. -> 사이클이 존재하면 ..

CS/algorithm 2021.05.15

MST(Minimum Spanning Tree): 최소 신장 트리

* 그래프에서 최소 비용 문제 1. 모든 정점을 연결하는 간선들의 가중치의 합이 최소가 되는 트리 -> 최소 신장 트리 2. 두 정점 사이의 최소 비용의 경로 찾기 * 신장 트리 - n개의 정점으로 이루어진 무향 그래프에서 n개의 정점과 n-1개의 간선으로 이루어진 트리 * 최소 신장 트리(Minimum Spanning Tree) - 무향 가중치 그래프에서 신장 트리를 구성하는 간선들의 가중치 합이 최소인 신장 트리 * MST의 특징 사이클이 포함되어서는 안된다. 간선의 가중치의 합이 최소여야 한다. -> MST의 정의 * 현실에서의 MST 현실에서의 예를 들자면 케이블 회사가 클라이언트를 모두 연결하면서 케이블을 연결하는 비용을 최소로 하고 싶을 때 등이 있다. MST의 알고리즘에는 KRUSKAL과 P..

CS/algorithm 2021.05.14

백준 13335 트럭 (JAVA 자바)

문제 출처: https://www.acmicpc.net/problem/13335 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net 문제 유형: 구현/시뮬레이션 구현 문제다 보니 다양한 풀이 방법이 있겠지만 나는 시간대별로 계산하는 방법으로 풀었다. 길이가 W인 다리라면 그 얘기는 즉 다리에 한번에 올라갈 수 있는 트럭의 수도 W 대라는 말이다. 따라서 현재 다리 위에 올라가 있는 트럭의 수를 cntT로 하여 현재 트럭의 수가 W보다 작고 현재 다리 위에 올라가 있는..

MVC vs MVVM

MVC 패턴과 MVVM 패턴에 대해서는 지난번에 각각 포스팅을 한 적이 있었다. [지난 포스트] MVC - superbono-2020.tistory.com/78 MVC Model View Controller MVC 패턴이란 어플리케이션을 Model View Controller 세 영역으로 구분하고 나눈 것이다. Model (Service, Dao, Java Beans) 로직(비니지스 & db)로직을 처리하는 모든 것이다. controller.. superbono-2020.tistory.com MVVM - superbono-2020.tistory.com/51 MVVM * MVVM Model? 모델-뷰-뷰 모델(model-view-viewmodel, MVVM)은 디자인 패턴 중에 하나이다. MVVM 패턴을 ..

Web 2021.05.12

슬라이딩 윈도우 프로토콜

* Sliding Window Protocol? www.youtube.com/watch?v=zY3Sxvj8kZA&ab_channel=KhurramTanvir Slinding window(슬라이딩 윈도우)는 패킷 기반의 데이터 전송 프로토콜이다. 이 프로토콜은 데이터 링크 계층, TCP와 같은 패킷의 신뢰성 있는 전달이 필요할 경우 사용된다. 보통 신뢰성 있는 데이터 전송에 대해서는 모든 패킷에 대해서 정상적으로 정상적으로 전달되었음을 알리는 확인 신호(acknowledgement, 이하 ACK)를 받아야한다. 만약 패킷이 중도에 잘못되었거나 분실되어 확인받지 못하는 경우, 해당 패킷을 재전송해야한다. 이 과정은 시간이 오래 걸리기 때문에 효율성이 떨어진다. 슬라이딩 윈도우 프로토콜은 일정한 윈도우 크기 ..

CS/network 2021.05.11

Load Balancing(로드 밸런싱)

* Load Balancing? Load Balancing(로드 밸런싱, 부하 분산)은 컴퓨터 네트워크 기술의 일종으로 여러 개의 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 이 때 컴퓨터 자원은 CPU, Storage, Server 등이 될 수 있다. 로드 밸런싱을 통해 가용성 및 응답 시간을 최적화할 수 있다. 또한 인터넷 서비스에 로드밸런싱을 적용하면 내부 네트워크 구조를 숨길 수 있으므로 크래킹을 막을 수 있는 보안적 이점을 얻을 수 있다. * Load Balancer? 서버에 가해지는 부하(Load)를 분산(Balancing)해주는 장치 또는 기술을 통칭한다. 한 대의 서버로 부하가 집중되지 않도록 트래픽을 분산 관리해주어 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 해준다. * 트래픽 ..

CS/network 2021.05.09

URI와 URL, URN

* URI? 특정한 리소스의 식별자이다. * URL? HTTPs, FTP 등 어떻게 접근하지는지도 알 수 있게 해주는 특별한 타입의 식별자 특정 서버 안에서 해당 리소스에 접근할 수 있는 상대적인 위치(Location)를 나타낸다. (ex. http://www.google.com/doodles) url은 해당 리소스에 접근하는 절대적인 위치가 아닌 상대적인 위치를 말하기 때문에, 리소스가 옮겨지면 이전 url은 유효하지 않게 된다. * URN? URN은 리소스의 Name을 알려준다. 따라서 위치에 영향을 받지 않는 unique함을 나타내는 키 역할이 수행 가능하다. 앞서 URL은 리소스가 옮겨지면 이전 URL이 유효하지 않게 된다고 했지만 URN은 그렇지 않다. 출처 - goodgid.github.io/..

CS/network 2021.05.08

블로그의 100번째 글을 놓쳤다

블로그의 100번째 글에 뭘 올리면 좋을까 며칠 전부터 고민하고 있었는데 아무 생각 없이 피카츄 문제 푼 글을 올려버렸다. 야심차게 준비하뎐 100번째 글은 피카츄 풀이 글이 되었다... 심지어 101번째 글은 tcp와 udp를 비교하는 글이 되었다. 이럴수가 어쨌든 102번째 글이라도 지금 쓴다. 어쨌든 코딩할 때나 공부할 때 자주 듣는 유튜브 채널에 대해서 글을 쓰려고 한다. youtu.be/_X3RVXAXo6w 1. 나얼의 음악 세계 사실 나얼 노래 잘 모르는데 음악 선곡이 좋아서 자주 듣는다. 올드팝+8/90년대 알앤비를 주로 튼다. 주말 낮에 들으면 기분이 좋아질 것 같은 노래들이다. 근데 사실 주말 낮에 들어본 적은 없고 거의 평일 밤에 들었다. 아무튼 음악 선곡이 매끄럽게 이어져서 음악이 바..

후기 및 잡담 2021.05.07

TCP vs UDP

사실 TCP/UDP의 차이를 명료하게 정리하고자 글을 다시 쓴다. * TCP(Transmission Control Protocol)? 이름에서도 알 수 있듯 전송 제어 프로토콜이다. 인터넷을 사용하는 모든 통신의 기본적인 프로토콜이며 신뢰성 있는 데이터 전송을 보장한다. 연결 지향형(connection-oriented) 서비스를 제공한다. 전송 계층(transport layer)에서 동작한다. 다른 타입의 컴퓨터 간에 연결을 설정하는데 도움이 된다. 운영 체제와는 상관 없이 독립적으로 작동하며 많은 라우팅 프로토콜을 지원한다. - 동작 3 way handshake 방식을 통해 established 되며 연결이 설정된 뒤 데이터 전송이 시작된다. - 특징 - 전송(수신)확인 - 재전송 - 네트워크가 혼잡할..

CS/network 2021.05.07

백준 14405 피카츄 (JAVA 자바)

문제 출처 - www.acmicpc.net/problem/14405 14405번: 피카츄 피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다. 문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문 www.acmicpc.net 문제 유형 - 문자열 문자열의 길이만큼 돌되, i + 1보다 작거나 i + 2보다 작다는 검사를 해 주어야 문자열의 길이를 벗어나지 않을 수 있다. 이것 때문에 틀렸었다... -코드- import java.util.Scanner; public class BJ14405_피카츄 { static String str; public static void main(S..