전체 글 121

TCP/IP 계층 개념과 OSI7계층 비교

✅ TCP/IP TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP (인터넷 프로토콜)와 전송 조절 프로토콜인 TCP (전송 제어 프로토콜)로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.(unreliable datagram service) TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다. 출처: 나무위키 ✅ TCP/IP의 계층 Application Layer(응용계층) 특정 서비스를 제공하기 위해 애플리케이션 끼리 정보를 주고 받을 수 있다..

Computer Science 2023.01.03

네트워크 라우터 개념(Router)

✅ 라우터(Router) 라우터는 패킷의 위치를 추출하여 그 위치에 대한 최적의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장치이다. 이때 최적의 경로는 일반적으로 가장 빠르게 통신이 가능한 경로이다. 가장 빠르게 통신이 가능한 경로라는 것이 최단 거리 일 수도 있지만, 돌아가는 경로라도 고속의 전송로를 통하여 전달이 되는 경로가 될 수도 있다. 즉, 라우터(Router)는 네트워크와 네트워크 간의 경로(Route)를 설정하고 가장 빠른 길로 트래픽을 이끌어주는 네트워크 장비이다. 라우터는 다른 기종간의 네트워크를 연결하는 기능을 하기 때문에 여러 가지 프로토콜에서 전송되는 패킷을 받아들일 수 있어야 한다. 이렇게 받아들인 패킷을 여러 경로 중 가장 효율적인 경로를 선택하여 ..

Computer Science 2023.01.03

[python]백준 1388번: 바닥 장식(DFS, BFS)

# 1388 바닥 장식 https://www.acmicpc.net/problem/1388 1388번: 바닥 장식 형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나 www.acmicpc.net 코드 DFS def dfs_horizontal(x,y): # 주어진 범위를 벗어나는 경우에 즉시 종료 if x = n or y = m: return False # 현재 노드를 아직 방문하지 않았다면 if graph[x][y] == '-': # 해당 노드 방문 처리 graph[x][y] = 'o' # 좌, 우의 위치들도 모두 재귀적으로 호출 dfs_horizontal(x, y - 1..

Algorithm 2023.01.02

[python]백준 1260번: DFS와 BFS(DFS, BFS)

# 1260 DFS와 BFS https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 코드 from collections import deque N, M, V = map(int, input().split()) graph = [[] for i in range(N+1)] for i in range(M): a, b = map(int, input().split()) graph[a].append(b) graph[b].appe..

Algorithm 2023.01.01

[python]백준 2606번: 바이러스(BFS)

# 2606 바이러스 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 코드 from collections import deque n = int(input()) v = int(input()) graph = [[] for i in range(n+1)] visited = [0] * (n+1) for i in range(v): a, b = map(int, input().split()) graph[a] += [b] graph[b] += [a] visited[..

Algorithm 2023.01.01

[python]백준 2606번: 바이러스(DFS)

# 2606 바이러스 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 코드 N = int(input()) C = int(input()) graph = [[] for i in range(N+1)] visited = [0] * (N+1) for i in range(C): a, b = map(int, input().split()) graph[a].append(b) graph[b].append(a) def dfs(M): visited[M] = 1 for n..

Algorithm 2022.12.31

[python]백준 15686번: 치킨 배달(브루트포스)

# 15686 치킨 배달 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 코드 from itertools import combinations N, M = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(N)] house = [] # 집 좌표 chicken = [] # 치킨집 좌표 for r in range(N): # x for..

Algorithm 2022.12.31

동기와 비동기 개념과 장단점

프로그래밍을 하다보면 동기와 비동기에 대해서 듣게 된다. 데이터를 받는 방식인 동기와 비동기 둘의 개념에 대해 알아보고 차이점에 대해서 정리해보고자 한다. 1. 동기(Synchronous: 동시에 일어나는) 동기는 말 그대로 동시에 일어난다는 뜻이다. 요청과 그 결과가 동시에 일어난다는 뜻으로 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다. 때문에 사용자가 데이터를 서버에게 요청한다면 그 서버가 데이터 요청에 따른 응답을 사용자에게 다시 리턴해주기 전까지 사용자는 다른 활동을 할 수 없으며 기다려야 한다. 2. 비동기(Asynchronous: 동시에 일어나지 않는) 비동기는 동시에 일어나지 않는다는 듯으로 요청한 결과는 동시에 일어나지 않을거라는 뜻이다. 하나의 요청에 따른 응..

Computer Science 2022.12.30

OSI 7 Layer 디테일 정리(+ TCP/IP 4계층)

OSI 7계층이란 무엇일까? OSI 7계층은 네트워크 통신이 일어나는 과정을 7단계로 나눈 국제 표준화 기구(ISO)에서 정의한 표준 모델이다. 7 Layer에서 알 수 있듯 1계층 ~ 7계층으로 구성되어 있다. 하지만 나를 포함한 네트워크를 잘 모르는 사람들은 도대체 7계층이 뭐지..? 싶은 생각이 든다. 그래서 나도 공부할 겸 테코톡 히히님의 강의를 참고해 OSI 7계층과 TCP/IP 4계층에 대해서 정리해볼까 한다. 📝 1계층 - 물리 계층(Physical Layer) 두 대의 컴퓨터가 통신하려면 어떻게 해야될까? 먼저, 모든 파일과 프로그램은 0과 1의 나열이라는 말을 들어본 적이 있을 것이다. 그렇기 때문에 컴퓨터가 통신하려면 0과 1을 주고받을 수 있으면 된다. 전선을 통해 컴퓨터들이 연결되어..

Computer Science 2022.12.30

[python]백준 1931번: 회의실 배정(그리디 알고리즘)

# 1931 회의실 배정 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 N = int(input()) list_ = [] for i in range(N): a,b = map(int, input().split()) # 시작시간, 끝나는 시간 list_.append([a,b]) list_.sort(key=lambda x:(x[1], x[0])) # 끝나는 시간을 기준으로 정렬, 시작 시간을 기준으로 정렬 last = 0 count = 0 for i, j in list_: # 시작과 끝 시간 if i >= last: # 끝나는 시간보다 시작시간이 클 경우 c..

Algorithm 2022.12.29
728x90