![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr5AhC%2FbtsDKLXx6Qy%2FGEnhl4QNwLQxqY5G8x1o71%2Fimg.png)
본 포스팅은 인프런의 김영한님의 `모든 개발자를 위한 HTTP 기본 웹 지식` 강의를 수강하고 정리한 내용입니다. 인터넷 통신 인터넷은 어떻게 통신할까? 인터넷을 거치면서 복잡한 노드들을 통과해야 함 -> IP (인터넷 프로토콜) 도입 IP (인터넷 프로토콜) 통신을 위해 각 서버에게 IP 주소를 부여함. 클라이언트도 IP 주소를 부여 받아야 하고, 서버도 IP주소를 부여받아야 함. IP (인터넷 프로토콜) 역할 지정한 IP주소에 데이터 전달 패킷이라는 통신 단위로 전달 IP 패킷 정보 출발지 IP, 목적지 IP, 기타... 전달할 정보에 IP 패킷을 감싸서 전달, 전달.. IP 프로토콜의 한계 1. 비연결성 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송 됨 중간 서버가 갑자기 꺼지면 패킷..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQEMXJ%2FbtsDhh4JieH%2FBKXZQ038FKjAG3FAwsDShk%2Fimg.jpg)
Arrays.sort() 배열을 정렬하는데 사용 ('int [] ', 'String []' 등) 기본 데이터 타입 배열, 객체 배열 모두에 사용 가능 주어진 배열 직접 변경 Collections.sort() 컬렉션을 정렬하는 데 사용('List', 'Set' 등) 주어진 컬렉션을 직접 변경 둘 다 Comparable 인터페이스나 Comparator 인터페이스 중 하나를 구현하고 있어야 한다. 이 둘의 차이는 무엇일까? 알아본다. Comparable 인터페이스 객체가 자연스러운 순서를 갖도록 하는 것이 목표 객체 자체가 비교 로직을 구현 `compareTo` 메소드 제공해야함 메소드는 현재 객체가 다른 객체보다 작으먄 음수, 같은 0, 크면 양수를 반환해야 함 List people = new ArrayLi..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcovBeO%2Fbtsz8o0mdnY%2FpCcKNL0KXchOIZ3FK0xGZk%2Fimg.jpg)
1. 서론 이분 탐색 알고리즘 관련 문제를 풀다가 잘 이해가 안되는 부분이 2가지 있었는데 바로 원하는 값과 탐색 값이 같을 때 어디서 처리를 해야할지, 두 번째로 low와 high값 중 어떤 것을 결과로 선택 해야할지이다. 여러 블로그들을 방문하여 내가 고민했던 문제를 어떻게 생각했는지 알아봤는데 설명이 잘 되어있는 블로그에서는 대부분 Lower bound와 Upeer bound 중 하나를 선택해서 구현했다. 그래서 이 두 개념에 대해 알아보고자 한다! 2. Lower bound Lower bound 알고리즘 찾고자 하는 값(크거나 같은)의 시작위치를 알아낸다. 시간 복잡도 : O(logn) 2.1 동작 방식 1. 배열의 중간 값을 가져온다. 2. 중간 값과 검색값을 비교한다. 중간 값이 검색 값보다 ..
DFS DFS는 깊이 우선 탐색으로, 한 노드에서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방식을 말한다. 검색 속도 자체는 BFS에 비해 느리지만 조금 더 간단하다. 스택 혹은 재귀함수를 이용하여 구현한다. class Graph{ private int V; private LinkedList adj[]; Graph(int v){ V = v; adj = new LinkedList[v]; for(int i=0; i
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGBhcB%2FbtsrAQc2eWE%2FA76ikarWVGrX539feqgXOK%2Fimg.png)
합병 정렬 개념 리스트를 두 개의 균등한 크기로 분할하고 분할된 리스트를 정렬한 다음, 두 개의 정렬된 부분 리스트를 합하기를 반복하면서 전체를 정렬한다. 분할 정복 기법 알고리즘 중 하나이다. 분할 정복 기법 (divide and conquer) 문제를 작은 2개의 문제로 분리하고 각 문제를 해결 후, 결과를 모아서 원래의 문제를 해결하는 전략 구체적인 알고리즘 합병 정렬은 다음 3가지 단계를 반복하며 정렬을 한다. 분할(Divide) : 같은 크기의 2개의 부분 배열로 분할한다. 정복(Conquer) : 부분 배열을 정렬한다. 부분 배열의 크기가 충분히 작지 않으면 충분히 작아질 때까지 분할을 반복한다. 결합(Combine): 정렬된 부분 배열들을 하나의 배열로 통합한다. 부분 리스트의 크기가 1개가..