📕 제 2장 웹 프로그래밍 기초 다지기 1-3. HTTP 요청 (1) 요청 라인(Request-Line) - 요청 메시지의 첫 라인에는 메서드와 요청하는 자원, 프로토콜 버전으로 구성된다 1-1. 메서드 - 요청하는 자원에 대해 웹 서버에게 내리는 명령 - 메서드에는 GET, POST, HEAD, PUT, DELETE, TRACE, CONNECT, OPTIONS 등이 있다 1-2. 요청 URI - HTML 파일이나 이미지, 동영상 등이 있는 가상의 경로를 의미한다 - 웹 서버는 식별자인 요청 URI를 이용해 필요한 자원을 찾는다 - 이미지에는 기본문서를 의미하는 / 를 작성했지만, 자원을 요청하는 경우 경로를 명시한다 (예) /img/test.jpg 1-3. HTTP버전 - HTTP버전은 요청 정보가 어..
📕 제 2장 웹 프로그래밍 기초 다지기 1-2. HTTP 모니터링 HTTP 프록시 - 웹 브라우저와 웹 서버 사이에 주고받는 데이터를 살펴보기 위해서는 HTTP 프록시 프로그램이 필요하다 - 프록시 프로그램의 구동원리는 아래의 그림과 같다 - 웹 브라우저가 웹 서버에게 요청을 하면 HTTP프록시가 대신 서버에 전달한다 - 서버로부터의 응답도 HTTP 프록시가 대신 웹 브라우저에 전달한다 - HTTP 프록시는 웹 브라우저와 웹 서버의 중간에서 요청과 응답을 중계해준다 - 그렇기 때문에 HTTP 프록시 프로그램을 사용해 클라이언트와 서버 사이에서 주고받는 데이터를 확인할 수 있다 HTTP 프록시 모니터 프로그램의 종류 - Charles : https://www.charlesproxy.com/ - Fiddle..
📕 제 2장 웹 프로그래밍 기초 다지기 1-1. HTTP 프로토콜 - 웹 브라우저와 웹 서버 사이의 데이터 통신 규칙 - 웹 페이지의 링크를 클릭하면 웹 브라우저가 보낸 데이터를 분석하여 요청받은 일을 처리하고 응답한다 - 웹 브라우저에서 요청한 파일을 찾아 보내주며, 데이터를 보낼 때에는 HTTP 응답 형식에 맞추어 보낸다 - HTTP 프로토콜은 단순히 파일을 전송하는 것 뿐만아니라 - 원격 컴퓨터에 로딩되어 있는 함수나 객체의 메서드를 호출할 때에도 사용된다 HTTP 프로토콜 응용 기술 1. SOAP(Simple Object Access Protocol) - HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다 - SOAP은 웹 서비스에서 기본..
기출문제 (3) 문자열 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다. 문자열 S가 주어졌을 때, 다솜이가 해야 하는 행동의 최소 횟수를 출력하시오..
💬 문제 설명 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 예를 들어, 4개의 문서(A, B, C, D)가 순서대로 인쇄 대기목록에 있고 중요도가 2 1 3 2 라면 C D A B 순으로 인쇄하게 됩니다. 내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는..
💬 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 💡제한사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의..
1406. 에디터 한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 있다. 이 편집기가 지원하는 명령어는 다음과 같다. 초기에 편집기에 입력되어 있는 문자열이 주어지고, 그 이후 입력한 명령어가 차례로 주어졌을 때, 모든 명령어를 수행하고 난 후 편집기에 입력되어 있는 문자열을 구하는 프로그램을 작성하시오. ..
import from queue import PriorityQueue 생성 que1 = PriorityQueue() # que1.qsize() = 무한대 que2 = PriorityQueue(maxsize=10) # que2.qsize() = 10 우선순위 큐의 기본 사이즈는 무한대로, 만약 최대 크기를 지정하고자 한다면 maxsize 속성을 사용해 지정한다 데이터 삽입 que.put(7) que.put(3) que.put(5) 데이터 삭제 print(que.get()) # 3 print(que.get()) # 5 print(que.get()) # 7 get() 메서드를 사용해 오름차순으로 데이터를 삭제하고, 삭제한 값은 반환한다 우선순위 지정 que.put((5, 'FIVE')) que.put((1, ..
힙(Heap)의 삭제 연산 과정 루트 노드의 값이 가장 먼저 삭제된다. 최대 힙의 경우 최대값부터, 최소 힙의 경우 최솟값부터 삭제된다 최대 힙을 예로 들어 힙의 삭제 연산에 대해 알아보자 루트 노드를 삭제하고, 마지막 노드를 루트 노드의 자리로 이동한다 최대 힙은 루트 노드에 최대값이 와야 한다. 삭제 연산 후 루트 노드의 값은 전체 노드 중 최댓값이 아니므로 재구조화 과정이 필요하다. 루트 노드의 자식 노드 중, 더 큰 값(6)과 루트 노드의 값(2)을 비교하고 swap한다 부모 노드의 값(2)이 자식 노드의 값(5) 보다 작으므로 swap을 진행해주어 최대 힙의 구조를 완성시킨다
힙의 삽입 연산 2 → 5 → 3 → 4 → 6 → 1 → 7의 순서로 최대 힙에 값을 삽입하는 과정을 살펴보자 비어있는 노드에 값을 넣고, 부모 노드와의 대소 관계를 비교하며 swap과 insert를 반복한다 루트 노드에 2를 삽입한다 5을 삽입한다. 부모 노드(2) 보다 자식 노드(5)가 크기 때문에, swap을 진행한다 더 이상 대소 관계를 비교할 부모 노드가 없으므로 swap을 멈춘다 3을 삽입한다. 부모 노드(5)와 자식 노드(3)의 대소 관계가 성립한다 4을 삽입한다. 부모 노드(2) 보다 자식 노드(4)가 크기 때문에, swap을 진행한다 swap을 진행한 후 부모 노드(5) 와 자식 노드 (4)의 대소 관계가 성립하므로 swap을 멈춘다 6을 삽입한다. 부모 노드(4) 보다 자식 노드(6)..