분류 전체보기(42)
-
[CS : 네트워크] UDP
1. UDP 란? User Datagram Protocol의 약자다. 데이터를 데이터그램 단위로 처리하며 UDP는 비연결형, 신뢰성 없는 전송 프로토콜이다. OSI 7 계층에서 4 계층인 전송 계층에 해당하는 프로토콜이며 TCP , UDP가 연결형 통신, 비연결형 통신의 대표적인 프로토콜이다. TCP는 신뢰성 있는 통신을 위해 패킷 손실, 패킷 순서 뒤바뀜, 네트워크 혼잡, 수신자가 overload 되는 등의 상황에 대하여 흐름 제어, 오류 제어, 혼잡 제어 등의 알고리즘을 사용한다. 그러나 UDP는 TCP의 기능이 없다. 즉 3 계층인 IP 가 제공하는 수준이 간단한 IP의 상위 계층 프로토콜이다. 따라서 TCP와는 다르게 에러가 생길 수도 있고 재전송이나 순서가 뒤바뀔 수도 있다. 그럼 UDP를 도대..
2021.05.10 -
[CS : 네트워크] 대칭키 & 공개키
1. 대칭키 알고리즘 암호문을 생성할 때 사용하는 키와 암호문을 평문으로 복원할 때 사용하는 키가 동일한 암호 시스템 1) 대칭키의 장단점 : 대칭키는 송신자와 수신자가 같은 키를 보유하고 그 키를 통해 송신자가 평문을 암호화해서 전송하면 수신자가 같은 키로 복호화한다. 키 크기가 상대적으로 작고 암호 알고리즘 내부 구조가 단순하여, 시스템 개발 환경에 용이하고, 비대칭키에 비해 암호화와 복호화 속도가 빠르다. 하지만 교환 당사자간에 동일한 키를 공유해야 하기 때문에 키 관리의 어려움이 있고, 잦은 키 변경이 있는 경우에 불편함을 초래한다. 뿐만 아니라 디지털 서명 기법에 적용이 곤란하고 안전성을 분석하기가 어렵고 중재자가 필요하다. 2) 대표적인 대칭키의 종류 a. DES(Data Encryption ..
2021.05.10 -
[백준] 2805번 : 나무 자르기
저번 코테에서 이분 탐색 문제에서 개박살이 나서 이분탐색을 집중적으로 공부해야겠다는 생각이 들어 준비했다. 접근법 - 기존에 이분 탐색 문제들을 쭉 훑어보다 보니 비슷한 결을 찾을 수가 있었다. 대체로 범위가 굉장히 크고(완전 탐색을 하면 시간 초과가 발생하게 하려고) 원하는 값을 찾기 위해서 범위를 좁혀나가는 방법을 채택하게 한다. - 이 문제도 나무의 길이가 2,000,000,000으로 엄청 커서 완전 탐색으로 찾으면 시간초과가 발생한다. 그래서 이분탐색으로 start를 0, end를 2,000,000,000으로 설정한 후 mid = (start + end) // 2로 설정해가면서 반씩 줄여나가는 방법을 채택했다. - while문으로 start = M : start = mid + 1 break if ..
2021.05.07 -
[CS : 네트워크] OSI 7계층
1. OSI 7계층이란 ? Open System Interconnection 의 약자이며 국제표준화기구 ISO에서 개발한 네트워크 프로토콜 디자인과 통신을 7개의 계층으로 나눠 설명한 것. 거대한 컴퓨터 통신 시스템을 한번에 처리하기가 어렵기 때문에 추상화를 통해 부분적으로 나누게 되었고 이것이 계층화를 유도하며 프로토콜이 되었다. # 프로토콜이란 ? 컴퓨터나 여러 통신 장비사이에서 메시지를 주고 받을 때 정해놓는 규칙체계를 말한다. 양쪽이 반드시 대칭관계를 이루며 보내는 쪽과 받는 쪽이 미리 정해 놓은 약속이라고 생각하면 된다. TCP 와 IP , HTTP 등등 여러가지 프로토콜이 존재한다. 현재의 인터넷은 TCP/IP라는 프로토콜을 이용하기 때문에 모든 PC는 TCP/IP의 규칙에 의해 통신을 하게 ..
2021.05.06 -
[백준] 2206번 : 벽 부수고 이동하기
접근법 - 기존에 BFS를 푸는 방법과 동일하게 2차원 배열로 해결하는 방법으로 접근했다. - 기존의 방법대로 한다면 matrix에서 1인 값들을 0으로 바꿔서 새 matrix를 만들고(이 경우 matrix의 크기만큼 for문이 돌아간다.) 그 matrix에서 BFS를 시행해서 결괏값을 얻어낸다. - 배열의 크기가 최대 1,000,000인 것을 고려하지 못해서 결과적으로는 실패한 코드고 시간 초과가 발생하였다. 도저히 시간을 줄일 방법이 떠오르지 않아서 다른 분들의 코드를 참고하여 이해할 수 있었다. (Tistory 깨지고 부서져라) - 다른 사람들은 대체로 3차원 배열로 접근을 해서 마지막 3차원에 벽의 깨진 상태를 1 혹은 0으로 보관하여 visit[row][col][0]이면 벽을 이미 깬 상태에서 ..
2021.04.27 -
[백준] 1697번 : 숨바꼭질
접근법 - 처음에는 2중 배열로 바꿔서 계산을 해야 하나 고민했는데 그럴 필요가 없음을 깨달았다. (2중 배열로 바꾸면 배열의 사이즈가 계속 달라지기 때문에 불가능) - 배열을 100001의 크기로 만들고 visit[5](출발지)의 값을 1로 설정한다. - queue는 deque를 import하여 만들어 주고 queue에 출발지 값(= 5)을 넣는다. - 평범한 BFS처럼 queue에서 값을 하나씩 빼가면서 진행한다. - val + 1이 배열의 범위를 넘지 않고, 방문한 적이 없다면 visit[val + 1]을 visit[val] + 1의 값을 넣어준다. - 그 후 val + 1에서부터 다시 탐색을 하기 위해 queue에 val + 1을 넣어준다. - val - 1과 val * 2도 같은 방법으로 탐색을..
2021.04.26