[네트워크] 4계층 - TCP, UDP 프로토콜
CS/네트워크2024. 1. 2. 12:53[네트워크] 4계층 - TCP, UDP 프로토콜

본 포스팅은 네트워크 스터디를 기반으로 개인 정리를 위한 포스팅입니다. 잘못된 부분이 있다면 언제든 지적해주시면 감사하겠습니다! UDP 프로토콜 안전한 연결을 지향하지 않음. 사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)은 유니버셜 데이터그램 프로토콜이라고 일컫기도 함. UDP의 전송 방식은 너무 단순해서 서비스의 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나, 중복되거나, 심지어는 통보 없이 누락시키기도 함. UDP는 일반적으로 오류의 검사와 수정이 필요 없는 프로그램에 수행할 으로 가정. 일반적으로 TCP에 비해 속도가 빠르다는 장점이 있음. UDP 프로토콜의 구조 Length : UDP 프로토콜 헤더 및 페이로드 길이 포함 총 길이. Checksum : 프로토콜이 ..

[네트워크] 3계층 - IPv4 프로토콜, ICMP 프로토콜
CS/네트워크2024. 1. 2. 12:28[네트워크] 3계층 - IPv4 프로토콜, ICMP 프로토콜

본 포스팅은 네트워크 스터디를 기반으로 개인 정리를 위한 포스팅입니다. 잘못된 부분이 있다면 언제든 지적해주시면 감사하겠습니다! 3계층 역할 수신처까지 최적의 경로 탐색 (라우팅 역할) 2계층 이더넷에서는 주소로 MAC 주소를 사용했지만, 3계층에서는 MAC 주소는 사용하지 않는다. 그 이유는 MAC 주소는 장소를 특정할 수 없는 주소이기 때문 IPv4가 하는 일 네트워크 상에서 데이터를 교환하기 위한 프로토콜 데이터가 정확하게 전달될 것을 보장하진 않음 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있음. (악의적으로 이용되면 DoS 공격이 됨) 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장함. IPv4 프로토콜 구조 IPv4 프로토콜 ⇒ 다른 네트워크의 특정 ..

[PS] 백준30894 : 유령의 집 탈출하기(Java)
CS/알고리즘2024. 1. 1. 02:36[PS] 백준30894 : 유령의 집 탈출하기(Java)

문제 https://www.acmicpc.net/problem/30894 30894번: 유령의 집 탈출하기 첫째 줄에 유령의 집의 크기 $N, M$이 주어집니다.$(2≤N,M≤200)$ 둘째 줄에 유령의 집의 입구 좌표 $S_x, S_y$, 출구 좌표 $E_x, E_y$가 주어집니다.$(1≤S_x, E_x≤N, 1≤S_y, E_y≤M)$ 좌표 $(x, y)$는 위에서부터 www.acmicpc.net 풀이 3차원 방문체크를 활용한 BFS 풀이 접근법 3차원 방문배열을 활용 각 유령들은 시간에 따라 바라보는 방향이 바뀌는데 총 4가지의 서로 다른 맵이 존재함. 이 점을 활용하여 3차원 방문배열을 통해 각 방문배열마다 유령이 바라볼 수 있는 공간들에 대해 미리 전처리한 후 BFS 탐색을 수행. 소스코드 imp..

[MySQL] 인덱스(INDEX)
CS/DataBase2023. 12. 29. 01:56[MySQL] 인덱스(INDEX)

인덱스(Index)인덱스는 테이블의 동작속도(조회)를 높여주는 자료구조인덱스로 데이터의 위치를 빠르게 찾아주는 역할 SELECT 명령문의 속도는 빨라질 수 있지만 UPDATE, INSERT, DELETE의 속도는 저하되는 단점이 있음. (Table의 index 색인 정보를 갱신하는 추가적인 비용을 소모하기 때문 == 정렬과 관계있음.) 컬럼의 값과 레코드가 저장된 주소를 키와 값의 쌍으로 인덱스를 만들어 놓음.MYI(MySQL Index) 파일에 인덱스가 저장됨. Feature인덱스는 하나 혹은 여러 개의 컬럼에 대해 설정할 수 있다. (복합 인덱스) WHERE 절을 사용하지 않고 인덱스가 걸린 컬럼을 조회하는 것은 성능에 아무런 영향이 없음. MySQL의 경우 BTREE 알고리즘을 활용. 인덱스를 저장..

[PS] 백준1300 : K번째 수(Java)
CS/알고리즘2023. 12. 28. 18:25[PS] 백준1300 : K번째 수(Java)

문제 https://www.acmicpc.net/problem/1300 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B www.acmicpc.net 풀이 파라메트릭 서치를 활용한 풀이 그리디한 접근법 A[i][j]값을 1차원 배열에 기록 후 오름차순 정렬을 통해 원하는 값 B[K]를 구하는 방식 해당 방식으로 풀이하게 될 경우 N^2만큼의 메모리가 필요할 뿐더러 시간 또한 O(N^2)만큼 걸리기 때문에 AC를 받을 수 없음 LowerBound 접근 위의 방식에서 이분탐색을 추가해서 탐색 시간을 줄여야하는데 ..

[알고리즘] 최장 증가 수열 - 이분 탐색 활용 : O(NlogN) Java
CS/알고리즘2023. 12. 27. 14:33[알고리즘] 최장 증가 수열 - 이분 탐색 활용 : O(NlogN) Java

Concept 기존 dp 메모이제이션을 활용한 LIS에서 시간복잡도를 줄이기 위해 이분탐색을 활용 기존 LIS에서 앞쪽 수열을 보고 큰 값을 찾고 값을 갱신하는데 드는 시간인 O(N)을 줄일 수 없을까에서 비롯된 방식 사전지식으로 LowerBound 이분탐색에 대한 이해와 O(N^2)방식의 이해가 요구. Feature 시간복잡도의 경우 모든 원소를 탐색하는 시간 O(N)에 대해 이분탐색 O(NlogN)을 수행함으로 총 O(N * NlogN)이므로 O(NlogN)의 시간으로 최장 증가 수열을 구할 수 있음. Implement 1. 각각의 원소 i에 대해서 현재 기록된 lis배열의 끝 인덱스와 비교하여 i가 더 크다면 뒤에 추가 2. i가 더 작을 경우 이분탐색을 통해 해당 원소가 들어갈 수 있는 자리를 탐..

CS/알고리즘2023. 12. 23. 16:29[PS] 백준7579 : 앱(Java)

문제 https://www.acmicpc.net/problem/7579 7579번: 앱 입력은 3줄로 이루어져 있다. 첫 줄에는 정수 N과 M이 공백문자로 구분되어 주어지며, 둘째 줄과 셋째 줄에는 각각 N개의 정수가 공백문자로 구분되어 주어진다. 둘째 줄의 N개의 정수는 현재 활 www.acmicpc.net 풀이 DP Knapsack 문제 접근법 전형적인 Knapsack문제라 처음 배열의 행을 최대 BYTE 수인 10,000,000으로 두고 풀이하려함. 하지만 시간복잡도가 N이 최대 100이라 O(NM)이면 1억을 넘기 때문에 시간초과가 나기에 포기. 두번째로는 1차원 dp배열의 값을 최대 비용으로 두고 접근. 해당 문제에서 앱은 최대 100개, 비용은 각 앱 당 최대 100까지 나오기 때문에 최대 1..

CS/알고리즘2023. 12. 21. 19:54[PS] 백준1535 : 안녕(Java)

문제 https://www.acmicpc.net/problem/1535 1535번: 안녕 첫째 줄에 사람의 수 N(≤ 20)이 들어온다. 둘째 줄에는 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 들어오고, 셋째 줄에는 각각의 사람에게 인사를 할 때, 얻는 기쁨이 1번 www.acmicpc.net 풀이 부분집합으로 풀이가 가능한 문제 DP Knapsack으로 접근해봤던 문제임 접근법 Knapsack으로 풀어보자고 권유를 받아 DP 상향식으로 접근 세준이의 최대체력은 100으로 각 체력을 행으로 주어지는 사람을 열로 2차원 dp배열을 초기화 각 j번째 사람에 대해 hp[j]가 현재 체력 i보다 낮을 경우 이전 부분문제의 해와 비교하여 최대값을 갱신 누적값이 필요하기 때문에 체력 i보다..

image