분류 전체보기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📕문제 풀이 무적권을 적절한 라운드에 사용해서 최대한 많은 라운드를 버텨야 한다. 따라서 무적권을 사용하는 라운드를 선정하는 방법이 중요하다! 📗초기 풀이 방식 초기 풀이 방식은 queue에 넣어서, 모든 경우의 수를 탐색했다. 하지만 N의 길이가 커서 시간초과가 났다. 초기 알고리즘은 이렇다. queue에 원소를 계속 넣어서, 만약 가용가능한 병사의 수가 현재 라운드의 적의 수보다 적으면..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔎문제 해석 출발점에서 레버를 당겨서 탈출점까지의 최소 경로를 구하는 문제입니다. BFS 알고리즘을 사용해서 쉽게 풀 수 있습니다. 문제는 굉장히 간단합니다..(저는 너무 복잡하게 생각해서 오래 걸렸습니다ㅜㅜ) 문제를 보면 출발정메서 레버로 있는 칸으로 이동하고, 레버를 당긴 후, 탈출점으로 이동하라고 나와 있습니다. 이 문제는 반드시 탈출을 하기 위해서는 레버를 당겨야 합니다. 만약 출발..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔎문제 해석 우선 문제를 읽고, DFS 혹은 백트래킹으로 풀어야겠다고 생각을 했습니다. 쭈욱 진행하다가, 만약 끝에 도달했을 때의 점수를 비교해서, 가장 큰 점수로 이기는 방법을 계속 찾아줬습니다. 문제에서는 만약 가장 큰 점수로 이기는 방법이 여러 가지라면, 특수한 조건을 부여했고, 그 조건도 그렇게 어려운 조건이 아닙니다. 문제에서 포인트는 이 문제를 DFS로 풀어야 한다는 것입니다. 우..
Network Layer 이번글에서는 IP protocol에 대해서 써볼까 합니다. 인터넷프로토콜(IP, Internet Protocol) 송신호스트와 수신 호스트가 패킷을 교환할 때 사용되며, 데이터 패킷을 목적지로 전달하는 역할을 수행합니다. IP protocol은 비연결성 프로토콜로, 데이터의 신뢰성을 보장하지 않습니다. 하지만 이러한 IP 프로토콜은 Transport 계층에 TCP, UDP와 함께 사용될 수 있어, 부족한 점을 보완할 수 있습니다. IP Datagram format 기본적으로 IP header는 패킷을 어디로 어떻게 보낼지에 대한 정보를 담고 있습니다. ver IP 프로토콜의 버전 정보 ex) IPv4, IPv6 헤더 길이 IP datagram 헤더의 길이를 나타낸다. 일반적으로 ..
이번 글은 Network Layer에 대해서 설명해 보겠습니다. 우선 Network Layer는 Transport Layer 아래에 위치합니다. Network layer의 핵심 기능 Forwarding data plane이 담당 패킷이 들어왔을 때, 보내주는 기능 Routing control plane이 담당. 들어온 패킷을 어디로 보낼지 판단하는 기능 판단하는 과정을 Routing table을 보고 판단함. 간단하게 두 기능을 여행에 비유해 설명해 보자면, forwarding은 여행을 하는데 고속도로를 통과하는 것처럼 그저 나아가는 작업입니다. routing은 여행에서 출발지에서 목적지까지의 경로를 계획하는 과정입니다. 자 그러면 이러한 기능들을 해주는 Data plane과 Control plane은 ..
이전 글에서는 congestion control을 해야 하는 이유에 대해서 설명했습니다. 중요 단어를 짚고 넘어가자면, cwnd (congestion window) sender가 ack를 받기 전에 보낼 수 있는 패킷양을 의미합니다. cwnd값이 증가하면 더 빠르게 데이터를 전송할 수 있다. 이 값을 적절하게 잘 조절하는 것이 congestion control의 목표이다! 이번 글에서는 어떤 식으로 혼잡을 회피하는지에 대해서 설명하겠습니다. AIMD (Additive Increase & Multiplicative Decrease) 말 그대로 합 증가, 곱 감소 알고리즘이다. 패킷 로스가 발생하지 않는다면 전송률을 점진적으로 증가시키다가, loss가 감지되면 전송률을 반으로 감소시키는 방식이다. AIMD ..
Congestion이 무엇이냐? 사전적 의미는 혼잡, 과잉이라는 뜻을 가지고 있습니다. 네트워크에서 너무 많은 것들이 한정된 공간을 사용하려고 할 때 발생하는 상황을 가리킵니다. 네트워크에서 Congestion이 일어나면, 딜레이가 길어지고, 패킷이 유실되는 상황이 발생합니다. Congestion control과 flow control은 다른 개념입니다. Congestion control은 네트워크의 트래픽이 많아져 네트워크의 성능이 저하되는 혼잡 상태를 관리하는 기술이고, Flow control은 송신자와 수신자 간의 데이터 전송 속도를 조절하여 오버플로우를 방지하는 기술입니다. 각각은 다른 개념이지만 함께 사용되어 네트워크의 효율적인 데이터 전송을 가능하게 해 줍니다. Congestion의 원인과 비..
TCP는 신뢰성 있는 연결을 하는 프로토콜입니다. UDP랑 다르게 연결을 시작할 때도 복잡한 과정을 거칩니다. 연결을 시작하기전에, 송신/수신의 상태를 확인하는 과정이 필요합니다. 2-way handshake TCP 연결을 수립하는 방법 중 하나입니다. 클라이언트에서 연결을 하고싶다고 제안하면, 서버 측에서 승낙하는 방식입니다. 동작 방식 클라이언트가 서버에게 연결을 요청합니다. 이때 Headr의 SYN bit를 1로 설정하여 보냅니다. 서버가 연결이 가능할 경우, 클라언트에게 응답을 보냅니다. TCP header의 ACK,SYN bit를 1로 설정하여 보냅니다. 클라이언트가 서버로 부터 받은 ACK 패킷과, SYN 패킷을 확인하고, 데이터를 전송합니다. 설명의 편의를 위해서 왼쪽을 A, 오른쪽을 B라고..
TCP flow control의 이유 음 예를 들면 이제 음식점이 있겠네요. 주방에서 동시에 조리 가능한 음식을 6개라고 가정합시다. 이러면 홀에서는 주방에 상황에 따라 유동적으로 음식을 주문받고, 조금만 기다려 달라고 손님들에게 양해를 구해야 합니다. 만약 이렇지 않고 , 맘대로 주문을 받아버리면 주방에서는 대혼란이 오는 상황이 발생합니다. 나는 지금 조리가 불가능한데 음식을 그렇게 받으면 어떡하니?라고 홀에게 말하겠죠. (실제로 경험담입니다) 아무튼 이것도 컴퓨터로 엮어볼 수 있습니다. 네트워크 레이어에서 상위 계층(Transport Layer)으로 운반하는 속도가 트랜스포트 계층에서 상위계층(애플리케이션)으로 보내는 속도보다 빠르면 어떻게 될까요? 당연히 트랜스포트 계층에서는 정신이 없고, 최악의 ..
재한
'분류 전체보기' 카테고리의 글 목록 (22 Page)