Computer Science(9)
-
[Algorithm] 재귀
✅ 재귀 알고리즘이란? 하나의 함수에서 자기 자신을 다시 호출하여 작업을 수행하는 알고리즘이다. 동일한 문제의 조금 더 작은 경우를 해결함으로써 그 문제를 해결하는 것이다. ✅ 장점 점화식과 종료조건만 구현하면 만들 수 있기 때문에 가시성이 높고, 구현하기 쉽다. ✅ 단점 재귀함수의 종료 조건을 잘 설정해주지 않으면 재귀함수를 빠져나오지 못하게 되면서 무한루프에 빠질 수 있다. 재귀 호출의 깊이가 너무 깊어지면 너무 많은 메모리를 사용한다. ✅ 해결방법 절차 지향적사고를 버리고 귀납적 사고로 접근해야 한다. ✅ 예시 문제 https://www.acmicpc.net/problem/24460 24460번: 특별상이라도 받고 싶어 첫 번째 줄에는 정수 $N$이 주어진다. (단, $N = 2^m$, $0 \le..
2023.05.03 -
[Algorithm] greedy
✅ 그리디 알고리즘이란? 그리디 알고리즘은 탐욕 알고리즘 또는 욕심쟁이 알고리즘이라고도 불린다. 미래를 생각하지 않고 각 단계에서 가장 최선의 선택을 하는 기법이다. 단계마다 하는 선택은 그 단계에 대해 지역적으로는 최적이지만, 그 선택들을 계속 수집하여 최종적인 해답일지라도 최적이라는 보장은 없다. ✅ 알고리즘 해결 방법 선택 절차: 현재 상태에서의 최적의 해답을 선택한다. 적절성 검사: 선택된 해가 문제의 조건을 만족하는지 검사한다. 해답 검사: 원래의 문제가 해결되었는지 검사하고, 해결되지 않았다면 선택 절차로 돌아가 위의 과정을 반복한다. ✅ 알고리즘 문제 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다...
2023.05.03 -
[HTTP Network] 5장 - HTTP와 연계하는 웹 서버
1. 1대로 멀티 도메인을 가능하게 하는 가상 호스트 HTTP/1.1에서는 하나의 HTTP 서버에 여러 개의 웹 사이트를 실행할 수 있다. 이를 위해 가상 호스트(Virtual Host)라는 기능을 사용하고 있다. 가상 호스트 기능을 사용하면 물리적으로는 서버가 1대지만 가상으로는 여러 대가 있는 것처럼 설정하는 것이 가능하다. 인터넷에서 도메인명은 DNS에 의해서 IP 주소로 변환되고 나서 액세스하게 된다. 같은 IP 주소에서 다른 호스트명과 도메인 명을 가진 여러 개의 웹 사이트가 실행되고 있는 가상 호스트의 시스템이 있기 때문에, HTTP 리퀘스트를 보내는 경우에는 호스트명과 도메인 명을 완전하게 포함한 URI를 지정하거나, 반드시 Host 헤더 필드에서 지정해야 한다. 2. 통신을 중계하는 프로그..
2023.03.06 -
[HTTP Network] 4장 - 결과를 전달하는 HTTP 상태코드
1. 상태코드는 서버로부터 리퀘스트 결과를 전달한다. 상태코드의 역할은 클라이언트가 서버를 향해 리퀘스트를 보낼 때 서버에서 그 결과가 어떻게 되었느지 알려주는 것이다. 클래스 설명 1xx Informational 리퀘스트를 받아들여 처리중 2xx Success 리퀘스트를 정상적으로 처리했음 3xx Redirection 리퀘스트를 완료하기 위해서 추가 동작이 필요 4xx Client Error 서버는 리퀘스트 이해 불가능 5xx Sever Error 서버는 리퀘스트 처리 실패 2. 2xx 성공(Success) 2xx 리스폰스는 리퀘스트가 정상으로 처리되었음을 나타낸다. 200 OK 클라이언트가 보낸 리퀘스트를 서버가 정상 처리하였음 리스폰스에서 상태 코드와 함께 되돌아 오는 정보는 메소드에 따라 다르다...
2023.03.05 -
[HTTP Network] 3장 - HTTP 정보는 HTTP 메시지에 있다.
1. HTTP 메시지 HTTP 메시지란 HTTP에서 교환하는 정보이다. HTTP 메시지 구조 메시지 헤더 개행 문자[CR+LF] 메시지 바디 메시지 헤더: 서버와 클라이언트가 꼭 처리해야 하는 리퀘스트와 리스폰스 내용과 속성 등 CR+LF: CR와 LF 메시지 바디: 꼭 전송되는 데이터 그 자체 2. 리퀘스트 메시지와 리스폰스 메시지의 구조 리퀘스트 라인: 리퀘스트에 사용하는 메소드와 리퀘스트 URI와 사용하는 HTTP 버전이 포함 상태 라인: 리스폰스 결과를 나타내는 상태 코드와 설명, 사용하는 HTTP 버전이 포함 헤더 필드: 리퀘스트와 리스폰스의 여러 조건과 속성 등을 나타내는 각종 헤더 필드가 포함 그 외: HTTP의 RFC에는 없는 헤더 필드(쿠키 등)가 포함되는 경우가 있다. 3. 인코딩으로 ..
2023.02.22 -
[HTTP Network] 2장 - 간단한 프로토콜 HTTP
1. HTTP는 클라이언트와 서버 간에 통신을 한다. TCP/IP에 있는 다른 많은 프로토콜과 마찬가지로 HTTP도 클라이언트와 서버 간에 통신을 한다. HTTP 프로토콜에서는 반드시 한 쪽은 클라이언트, 다른 한 쪽은 서버의 역할을 담당한다. 2. 리퀘스트와 리스폰스를 교환하여 성립 HTTP는 반드시 클라이언트로 부터 리퀘스트가 송신되며, 그 결과가 서버로부터 리스폰스로 되돌아온다. 서버 측은 리퀘스트를 받지 않고서는 리스폰스를 송신하지 않는다. - 리퀘스트 메시지 구성 - 리스폰스 메시지 구성 3. HTTP는 상태를 유지하지 않는 프로토콜 HTTP는 상태를 계속 유지하지 않는 스테이트리스(Stateless) 프로토콜이다. 즉, HTTP 프로토콜 레벨에서는 이전에 보냈던 리퀘스트나 이미 되돌려준 리스폰..
2023.02.22