📕 제 2장 웹 프로그래밍 기초 다지기 💬 GET방식 - 웹 서버에 데이터를 보낼 때, URL에 쿼리 스트링의 형식으로 데이터를 전송한다 GET 요청의 발생 1. 웹 브라우저 주소창에 URL을 입력 2. 링크를 클릭하는 경우 3. 입력 form의 method 속성 값이 get인 경우 GET 요청의 장단점 - URL만으로 쉽게 웹 사이트에 접근할 수 있다 - 사용자가 입력한 데이터가 주소창에 그대로 노출 된다 → 보안에 취약 💬 POST방식 - 웹 서버에 데이터를 보낼 때, HTTP프로토콜의 메시지 본문(MessageBody)에 붙여서 전송한다 POST방식의 장단점 - 사용자의 입력값이 URL에 포함되지 않기 때문에 외부에 노출되지 않는다 - 데이터를 URL에 포함하지 않기때문에 URL만으로 결과 화면에 ..
📕 제 2장 웹 프로그래밍 기초 다지기 2.4 파일 업로드 - 웹 서버에 바이너리 데이터를 보내기 위해 고안된 멀티파트 인코딩 방법을 알아보자 - 이를 위한 태그의 설정 방법에 대해서도 함께 다루도록 한다 파일 업로드를 위한 태그 설정 : 멀티 파트 인코딩 태그의 enctype 속성 - 태그의 enctype 속성은 데이터가 서버로 제출될 때 해당 데이터가 인코딩 되는 방법을 명시한다 - 이 속성은 요소의 method 속성값이 “post”인 경우에만 사용할 수 있습니다. - 기본 값은 aplplication/x-www-form-urlencoded 을 사용한다 - 바이너리 데이터를 보내기 위해서는 multipart/form-data 으로 인코딩해야 한다 - 이미지나 동영상과 같은 바이너리 데이터를 전송해야 ..
📕 제 2장 웹 프로그래밍 기초 다지기 2.3 POST 요청 - 태그의 method 속성을 post로 지정하여 사용한다 - URL에 데이터가 포함되지 않아 외부에 노출되는 위험을 방지한다 - 메시지 본문에 데이터가 포함되므로, 실행 결과의 공유가 불가능하다 - 바이너리 및 대용량 데이터의 전송이 가능하다 POST 요청의 HTTP 프로토콜 확인 POST /web01/LoginServlet HTTP/1.1 # 요청 라인 Host: localhost:9999 Content-Length: 22 # Content-Length 헤더 ... Content-Type: application/x-www-form-urlencoded # Content-Type 헤더 ... # 공백 라인 id=tiger&password=lll..
10866. 덱 정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여덟 가지이다. push_front X: 정수 X를 덱의 앞에 넣는다. push_back X: 정수 X를 덱의 뒤에 넣는다. pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 덱에 들어있는 정수의 개수를 출력한다. empty: 덱이 비어있으면 1을, 아니면 0을 출력한다. front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 ..
1158. 요세푸스 문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 입력. 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) 출력. 예제와 같이 요세푸스 순열을 출력한다. Python import sys n, k..
💬 문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 💡제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. ✏️ 입출력 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다. 🔑Python def solution(prices): ..
💬 문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 따라서, 모든 트럭이 다리를 지나려면 최소 8초가 걸립니다. solution 함수의 매개변수로 다리에 올라갈 수 있는 트럭 수 bridge_length, 다리가 견딜 수..
📕 제 2장 웹 프로그래밍 기초 다지기 2.2 Get요청 URL에 데이터를 포함하므로 데이터 조회에 적합하다 데이터 전송에 특화된 방식이 아니므로, 바이너리 및 대용량 데이터 전송은 불가능하다 요청 라인과 헤드 필드의 최대 크기가 존재한다 - HTTP 사양에는 제한사항이 없다 - 대용량 URL로 인한 문제 발생 → 웹 서버에 따라 최대 크기가 제한된다 - Microsoft IIS 6.0+ : 16KB - Apache 웹 서버 : 8KB 💬 GET 요청이 발생하는 경우 1. 웹 브라우저 주소창에 URL을 입력하여 서버의 자원을 요청하는 경우 (예) http://localhost:9999/web02/GetTest.html → GetTest.html을 요청 2. 링크를 클릭하는 경우 3. 입력 form의 me..
📕 제 2장 웹 프로그래밍 기초 다지기 1-5. HTTP 클라이언트 만들기 package lesson02.client; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; public class SimpleHttpClient { public static void main(String[] args) throws Exception { // 1. 소켓 및 입출력 스트림 준비 Socket socket = new Socket("www.daum.net", 80); BufferedReader in = new BufferedReader(new InputStream..
📕 제 2장 웹 프로그래밍 기초 다지기 1-4. HTTP 응답 - 웹 브라우저가 요청하면 웹 서버는 그에 대한 작업을 수행하고, 응답 데이터를 보낸다 - 웹 서버가 응답한 내용에 대해 알아보자 (1) 상태 라인 (Status-Line) - 응답 메시지의 첫 라인은 응답 결과에 대한 상태 정보이다 - 프로토콜 버전과 상태 코드, 설명으로 구성된다 - 웹 어플리케이션을 개발하는 동안 자주 접하게 되는 응답 상태 코드에 대해 알아보자 (2) 응답 헤더 - 응답 데이터를 처리할 때 참고하도록 웹 브라우저에게 알려주는 정보를 담는다 - Content-Type 헤더는 서버가 웹 브라우저에 보내는 데이터의 형식을 나타낸다 - 웹 브라우저는 헤더의 값을 보고 데이터를 출력할지, 다운로드 창을 띄워야 하는지, 외부 프로..