본문 바로가기

[네트워크] 네트워크 기본 5계층, OSI 7계층 TCP와 UDP를 이해하기 위해 네트워크 기본 5계층에 대해 먼저 알아보겠습니다. 우선 네트워크란 무엇인가요? 네트워크(Network)는 컴퓨터들이 통신 기술을 이용하여 그물망처럼 연결된 통신 이용 형태를 뜻함 네트워크의 대략적인 이해 처음에 케이블을 이용해 컴퓨터간 통신, 컴퓨터 대수가 늘어나자 허브를 이용하기 시작 이때 MAC주소를 활용하여 통신에 활용하였으며 이 네트워크를 Local Area Network(LAN, 랜)이라 부름 이때의 통신 방식 중 하나가 Ethernet(컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN, MAN 및 WAN에서 가장 많이 활용되는 기술 규격) LAN 허브 끼리 연결한 것이 좀 더 거대한 네트워크를 WAN(Wide Area Network) 이라 부름 이때의 통신을 위..
2020 KAKAO 코딩테스트- 외벽 점검, 파이썬 문제 프로그래머스 문제 링크 풀이 필요역량 레벨 3 Brute force, permutation 정렬하고 간격으로 어떻게 풀어보려다 결국 테스트케이스에 실패, 다른 코드를 참고했다. weak 배열 크기도 작고, dist 배열 크기도 작기 때문에 완전탐색으로 문제를 풀 수 있다 (=쉽게 푼다고 머리만 쓰고 틀리지 마라) 파이썬 순열 : from itertools import permutations 파이썬 순열 라이브러리 몰라서 새로 짜서 썼다. (= 어리석음) 배워가야할 부분은 1. 완전탐색이 가능하면 단순하게 완전탐색으로 일단 풀자. 2. 원형으로 주어진 자료를 선형으로 풀자. 코드 풀이는 아래 주석으로 달아놓았다. 코드 from itertools import permutations def solutio..
[자료구조] 트리, 이진트리, 이진탐색트리, 완전이진트리 트리와 그래프 그래프 : 노드와 간선으로 표현, 사이클 가능, 루트노드 개념 없음, 부모-자식 개념 없음, 네트워크 모델 트리 : 노드로 이루어진 자료구조, 사이클 불가능 루트노드 반드시 한 개, 모든 자식노드는 한 개의 부모노드를 가짐, 계층 모델 트리 비선형 자료구조, 트리는 계층적 관계(Hierarchical Relationship)을 표현하는 자료구조 노드로 이루어진 자료구조(노드는 어떤 자료형으로도 표현 가능) Terminal Node ( = leaf Node, 말단 노드) : 하위에 다른 노드가 연결되어 있지 않은 노드를 의미한다. Node (노드) : 트리를 구성하고 있는 각각의 요소를 의미한다. Edge (간선) : 트리를 구성하기 위해 노드와 노드를 연결하는 선을 의미한다. 하나의 루트노..
[네트워크]HTTP와 HTTPS 차이 HTTP란? HTTP는 하이퍼 텍스트 전송 프로토콜의(Hypertext Transfer Protocol)의 약자 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 프로토콜(규약) HTTPS란? Hypertext Transfer Protocol Secure, 보안기술이 적용된 HTTP HTTP(응용계층)와 TCP(전송계층) 사이에서 일종의 보안 계층을 구현 SSL 트래픽은 바이너리 프로토콜로 HTTP와는 완전히 달라 다른포트(보통 443포트)를 통해 전달됨 왜 HTTPS가 필요하게 되었을까? HTTP는 도청, 위장, 변조 가능(평문 통신, 통신 상대를 확인 안함, 정보의 정확성 증명 불가) SSL(Secure Socket Layer), TLS(Transport Layer Security)라는 다른 프로토..
[자료구조]Array, Linked list 차이 배열과 연결리스트 활용 배열은 고정된 크기의 데이터를 저장하고 자주 데이터에 접근하는 경우에 유용하게 사용 연결리스트는 데이터의 추가와 삭제가 빈번하게 일어나거나, 복잡한 형태의 자료구조를 만들 때 사용 Array(배열) 장점 논리적 저장 순서와 물리적 저장 순서가 일치한다 인덱스(index)를 이용해 원소에 접근할 수 있다(인덱스 값을 알고 있으면 O(1)의 시간복잡도로 접근) 단점 삭제, 삽입시 배열의 연속적인 특징이 깨짐(빈 공간이 생긴다) 따라서 원소들을 shift해줘야 하는 비용(cost)이 발생하고 이 경우의 시간 복잡도는 O(n)가 된다. 데이터의 삽입 또는 삭제 등의 연산이 빈번하게 발생하여 데이터의 수가 다이나믹하게 변하게 되는 자료구조에서는 배열을 활용하는 것이 비효율적 Linked L..
[CS] 프레임워크와 라이브러리, API 차이 프레임워크 라이브러리 프레임워크 소프트웨어의 특정 문제를 해결하기 위한 클래스와 인터페이스의 집합 소프트웨어의 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것 객체의 생성, 관계설정, 생명 주기들을 제어함 설계의 재사용 라이브러리 도구(부품)로써의 개념이 강한 코드. 만든 클래스에서 필요한 기능을 호출하여 사용한다. 자주 사용되는 로직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합 코드의 재사용 프레임워크 라이브러리 차이 제어 흐름에 대한 주도성이 어디에 있는지가 핵심, 프레임워크의 제어의 역전(Inversion Of Control) 개념 프레임워크는 제어의 흐름이 프레임워크에 내재되어 있으나 라이브러리는 프로그래머가 주도하고 라이브러리를 도구로 이용하는 차이 라..
[CS]MVC패턴이란? MVC패턴 뜻 MVC는 Model-View-Controller의 약자로 프로그램 구성 요소를 크게 3가지로 구분한 것 MVC패턴은 소프트웨어 디자인 패턴으로 일종의 프로그램 개발 방법론 왜 MVC 패턴을 사용할까? 디자인 패턴을 적용하기 전에는 클래스 안에 온갖 코드가 섞여 존재했음. 기능이나 성격별로 구분되지 않아 유지보수가 어려웠음. 따라서 확장성과 유연성을 높이기 위해 역할에 따라 코드를 구분한 MVC패턴이 등장함 프로그램을 어떻게 설계하고 나눌지에 대한 일종의 가이드라인이자 개발자들 사이의 공통 규약같은 개념 어떻게 기능적으로 구분하고 관리할지에 대한 고민 유지보수가 편리하며(비즈니스로직 부분과 UI로직 부분을 나누어 관리) 확장성 및 유연성에 유리하며 중복 코드 등을 방지할 수 있음 사용 MVC..
124. Binary Tree Maximum Path Sum - 파이썬 문제 [릿코드 링크](https://leetcode.com/problems/binary-tree-maximum-path-sum/_ 이진트리의 각 노드를 한 번만 지날 수 있을 때 path의 최대값을 구하는 문제 풀이 난이도 hard 처음 풀었을 때 틀려서 다시 풀었다. 한 번만 지날 수 있기 때문에 결국 어느 노드에서 left와 right를 모두 포함할지 결정해야 한다.(어느 노드를 root 노드로 할지) path를 이어나가기 위해서는 왼쪽 혹은 오른쪽 중 하나만 선택해야 한다. 따라서 아래 코드를 실행하면 가장 밑에 level부터 cur_max를 갱신하게 된다. 밑에 있는 노드부터 차례로 path값을 계산한 후 path를 잇는 것이 더 값이 크면 이어나간다. 코드 class Solution: def m..