분류 전체보기
-
[파이썬/Python] 1967번 트리의 지름Algorithm/Baekjoon 2024. 4. 18. 18:35
문제https://www.acmicpc.net/problem/1967 1967번: 트리의 지름파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연www.acmicpc.net 코드import sysinput = sys.stdin.readlinesys.setrecursionlimit(10001)def dfs(v, w): global distance, farthest_node visited[v] = True # 현재 노드를 방문한 것으로 표시 # 현재 거리가 더 길 경우 가장 먼 거리와 노드..
-
[Network] TCP/IP 4계층Computer Science/Network 2024. 4. 16. 17:39
인터넷 프로토콜 스위트는 인터넷에서 컴퓨터들이 서로 정보를 공유받는데 쓰이는 프로토콜의 집합이며, TCP/IP 4계층 모델과 OSI 7계층 모델이 있다. 국제 표준 모델은 OSI 7계층이지만 실제 대다수 프로그램은 TCP/IP 계층 모델을 사용한다. 애플리케이션 계층 애플리케이션 계층은 응용 프로그램이 사용되는 프로토콜 계층이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층이다.. ex) FTP, HTTP, SSH, SMTP, DNS 전송 계층전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공하며, 애플레키이션과 인터넷 계층 사이의 데이터가 전달될 때의 중계 역할을 한다. ex) TCP, UDP TCPTCP는 패킷..
-
[파이썬/Python] 1987번 알파벳Algorithm/Baekjoon 2024. 4. 16. 17:32
문제 https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 $R$칸, 가로 $C$칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 ($1$행 $1$열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 www.acmicpc.net 코드 import sys # 입력 받기 input = sys.stdin.readline # 백트래킹 함수 정의 def backtracking(x, y, cnt): global alphabet global ans ans = max(ans, cnt) # 현재 경로 길이와 최대 길이 비교 및 업데이트 # 상, 하, 좌, 우 네 방향으로 이동 시도 for i in range(4): nx..
-
[파이썬/Python] 9019번 DSLRAlgorithm/Baekjoon 2024. 4. 2. 17:19
문제https://www.acmicpc.net/problem/9019 9019번: DSLR네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에www.acmicpc.net 코드import sysfrom collections import dequeinput = sys.stdin.readlinedef operation_d(n): return 2 * n % 10000def operation_s(n): return (n - 1) % 10000def operation_l(n): return (n % ..
-
[Network] 유선 LAN과 무선 LANComputer Science/Network 2024. 3. 28. 17:39
유선 LAN의 통신 유선 LAN을 이루는 이더넷은 IEEE802.3 프로토콜을 따르며 전이중화 통신을 쓴다. 전이중화 통신 전이중화 통신은 송신로와 수신로로 나눠서 데이터를 주고받으며 양쪽 장치가 동시에 송수신할 수 있는 방식을 말한다. 현대의 고속 이더넷은 이 방식을 기반으로 통신한다. CSMA/CD 이전에는 유선 LAN에 반이중화 통신 중 하나인 CSMA/CD 방식을 사용했다. 이 방식은 데이터를 보낸 이후 충돌이 발생한다면 일정 시간 이후 재전송하는 방식을 말한다. 이는 수신로와 송신로를 각각 둔 것이 아니고 한 경로를 기반으로 보내기 때문에 데이터를 보낼 때 충돌에 대해 대비해야 했기 때문이다. 유선 LAN을 이루는 케이블 트위스트 페어 케이블 트위스트 페어 케이블은 하나의 케이블처럼 보이지만 실..
-
[파이썬/Python] 16928번 뱀과 사다리 게임Algorithm/Baekjoon 2024. 3. 28. 15:42
문제https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x www.acmicpc.net 코드import sysfrom collections import dequeinput = sys.stdin.readlinedef bfs(v): # 각 칸에 도달하기 위한 최소 던지기 횟수를 저장할 배열 초기화 visited = [0] * 101 visited[v] = 1 q = deque([v]) while q: v..
-
[Network] TCP 연결 성립 과정, 연결 해제 과정Computer Science/Network 2024. 3. 27. 16:10
TCP 연결 성립 과정 TCP는 신뢰성을 확보할 때 '3-way handsahke' 라는 작업을 진행한다. 1. SYN 단계 클라이언트는 서버에 클라이언트의 ISN(Initial Sequence Numbers)을 담아 SYN(Synchronization)을 보낸다. ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호를 말하며 이는 장치마다 다를 수 있다. 2. SYN + ACK 단계 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보낸다. 3. ACK 단계 클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK(Acknowledgement)를 서버에 보낸다.\ 이렇게 '3-way handsahke' 과정 이후 신뢰성이 구축..
-
[파이썬/Python] 20529번 가장 가까운 세 사람의 심리적 거리Algorithm/Baekjoon 2024. 3. 27. 14:16
문제 https://www.acmicpc.net/problem/20529 20529번: 가장 가까운 세 사람의 심리적 거리 각 테스트 케이스에 대한 답을 정수 형태로 한 줄에 하나씩 출력한다. www.acmicpc.net 코드 import sys input = sys.stdin.readline t = int(input()) for _ in range(t): n = int(input()) mbti = list(map(str, input().rstrip().split())) if n > 32: print(0) else: # MBTI 유형 간의 거리를 저장할 2차원 리스트 초기화 distance = [[0] * n for _ in range(n)] # MBTI 유형 쌍에 대해 거리 계산 for i in ran..